Web アプリケーションで vaadin アップロード コンポーネントを使用し、ファイルを mongo db に gridfs 形式で直接アップロードしたいと考えています。
私の現在の実装では、一時的な保存場所を使用して最初にファイルをアップロードし、次に mongo に保存して gridfs に変換しています。
これが私のアップロード コンポーネント コードです。Receiver インターフェイス メソッド recieveUpload を実装しています。
private File file;
private String tempFilePath;
public class HandleUploadImpl extends CustomComponent
implements Upload.SucceededListener,
Upload.FailedListener,
Upload.ProgressListener,
Upload.Receiver { ........
public OutputStream receiveUpload(String filename, String MIMEType) {
logger.debug("File information {} {}", filename, MIMEType);
this.filename = filename;
FileOutputStream fos;
file = new File(tempFilePath + filename);
try {
fos = new FileOutputStream(file);
} catch (final java.io.FileNotFoundException e) {
logger.error("Error occurred while opening the file {}", e);
return null;
}
return fos;
}
これがmongoリポジトリに保存する私のコードです
private void saveBuildFile(Map<String, Object> buildFileInfo, String key) {
if (buildFileInfo.containsKey(key)) {
GridFS gridFS = new GridFS(mongoTemplate.getDb(), COLLECTION_NAME);
File file = (File) buildFileInfo.get(key);
buildFileInfo.remove(key);
try {
GridFSInputFile savedFile = gridFS.createFile(file);
savedFile.put(idK, buildFileInfo.get(key + "-id"));
savedFile.save();
} catch (Exception e) {
logger.error("Something went wrong when saving the file in the db {}", e);
}
}
}
一時ストレージの使用を省略し、アップロード コンポーネントの出力ストリームを mongo リポジトリ gridfs ファイルに設定する方法はありますか。