我有一個Java Spring MVC Web應用程序。從客戶端到AngularJS,我正在上傳文件並將其作爲web服務發佈到Controller。將MultipartFile轉換爲java.io.File而不復制到本地機器
在我的控制器中,我將它作爲MultipartFile,我可以將它複製到本地機器。
但是我想上傳文件到amazone S3 bucket。所以我必須將它轉換爲java.io.File。現在我正在做的是,我將它複製到本地機器,然後使用jets3t上傳到S3。
這是我在控制器
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.
然後我使用FIleCopyUtils轉換springframework的
的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);
所以會造成在本地機器上的新文件的方式。我在S3中上傳的文件
S3Object fileObject = new S3Object(newFile);
s3Service.putObject("myBucket", fileObject);
它在我的本地系統中創建文件。我不想創造。
而不在本地系統中的文件,如何將MultipartFIle轉換爲java.io.File的?
唯一的問題是在本地機器上創建文件。我現在正在做的是,在亞馬遜上傳後,我從本地機器上刪除。 –
是什麼激發了這個問題? S3 java-API?或者是什麼 ?你有能力發送輸入流到S3? – Boris
這對於S3 API只接受文件參數是不正確的,它也接受InputStream –