Ich habe eine Java Spring MVC-Webanwendung. Vom Client über AngularJS lade ich eine Datei hoch und poste sie als Webservice auf dem Controller.Konvertieren von MultipartFile in java.io.File ohne Kopieren auf lokalen Computer
In meinem Controller bin ich es als MultipartFile gettinfg und ich kann es auf lokale Maschine kopieren.
Aber ich möchte die Datei auf Amazone S3 Eimer hochladen. Also muss ich es in java.io.File konvertieren. Was ich gerade mache, ist, dass ich es auf den lokalen Computer kopiere und dann mit jets3t auf S3 hochlade.
Hier ist meine Art und Weise in der Steuerung der Umwandlung
MultipartHttpServletRequest mRequest=(MultipartHttpServletRequest)request;
Iterator<String> itr=mRequest.getFileNames();
while(itr.hasNext()){
MultipartFile mFile=mRequest.getFile(itr.next());
String fileName=mFile.getOriginalFilename();
fileLoc="/home/mydocs/my-uploads/"+date+"_"+fileName; //date is String form of current date.
Dann verwende ich FIleCopyUtils spring
File newFile = new File(fileLoc);
// if the directory does not exist, create it
if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
FileCopyUtils.copy(mFile.getBytes(), newFile);
So wird es eine neue Datei in dem lokalen Rechner erstellen. Die Datei, die ich in S3
S3Object fileObject = new S3Object(newFile);
s3Service.putObject("myBucket", fileObject);
uplaoding Erstelle Datei in meinem lokalen System. Ich möchte nicht erstellen.
Ohne eine Datei im lokalen System zu schaffen, wie ein MultipartFIle-java.io.File konvertieren?
Das einzige Problem ist das Erstellen der Datei im lokalen Rechner. Was ich jetzt mache ist, nachdem ich in Amazon hochgeladen habe, lösche ich von meinem lokalen Rechner. –
Was inspiriert dieses Problem? S3 Java-API? Oder was ? Können Sie einen Eingabestream an S3 senden? – Boris
Dies ist in Bezug auf die S3-API, die nur Dateiparameter akzeptiert, falsch, sie akzeptiert auch InputStream –