Java Spring MVC Webアプリケーションがあります。クライアントから、AngularJS経由でファイルをアップロードし、webserviceとしてControllerに投稿しています。ローカルマシンにコピーせずにMultipartFileをjava.io.Fileに変換する
私のコントローラでは、MultipartFileとして取得しています。ローカルマシンにコピーすることができます。
しかし、ファイルをにアップロードします。Amazone S3バケット。だから私は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.
を変換する私の方法であるそれから私は、だから、それがローカルマシンに新しいファイルを作成します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);
のFIleCopyUtilsを使用しています。そのファイルはS3で取得しようとしています
S3Object fileObject = new S3Object(newFile);
s3Service.putObject("myBucket", fileObject);
私のローカルシステムにファイルが作成されます。私は作成したくありません。
ローカルシステムのファイルを作成せずに、どのようにjava.io.FileのにMultipartFIleを変換するには?
ローカルマシンにファイルを作成するだけで問題があります。私が今やっていることは、アマゾンでアップロードした後、ローカルマシンから削除しています。 –
この問題の原因は何ですか? S3 Java-API?または何 ?あなたはS3に入力ストリームを送る能力を持っていますか? – Boris
これは、S3 APIのファイルパラメータのみを受け入れる点では間違っており、InputStream –