我有一个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 –