Play 2で同時に複数のファイルをロードし、非同期APIでそれらのサムネイルを作成しようとしています。アップロードは問題なく動作し、画像処理の開始時に大きな問題が発生します。問題は次のとおりです(少し説明):リクエストからフェッチされてリストに収集されたファイルが、画像処理中に消えてしまいます(時間がかかります)。
そしてここにいくつかのサンプル:
//part of controller
public static Result addPictures2(Long galleryId) {
MultipartFormData body = request().body().asMultipartFormData();
final List<FilePart> fileList = body.getFiles();
final Long fGalleryId = galleryId;
Promise<Boolean> promiseOfBool = Akka.future(
new Callable<Boolean>() {
public Boolean call() {
Gallery gallery = Gallery.find.byId(fGalleryId);
for(FilePart part : fileList) {
File picFile = part.getFile();
Logger.debug("picFile: " + picFile.exists());
String extension = FilenameUtils.getExtension(part.getFilename());
GalleryItem item = new GalleryItem("", "", picFile, extension);
gallery.addItem(item);
}
gallery.update();
return true;
}
}
);
return async(
promiseOfBool.map(
new Function<Boolean, Result>() {
public Result apply(Boolean b) {
return redirect(
controllers.backend.routes.GalleryContentController.showGalleryItemsPage(fGalleryId)
);
}
}
)
);
}
それで
gallery.addItem(item);
時間がかかり、次の電話
Logger.debug( "picFile:" + picFile.exists());
picFileが存在しないことを示します。私は知っています、これはそれらのファイルが一時的なものであるためです...しかし、それらはもう少し長く存在する必要がありますか?そして問題は、この問題をどのように解決するかということです。Javaで一時ファイルを見る必要がありますか?