AWT Elastic Beanstalkにデプロイされた、AngularJSのフロントエンド用のSpring MVCアプリケーションがあります。Spring MVCアプリケーション画像ストレージ
私は EXアプリ内でディレクトリを作成することで画像を保存した
@RequestMapping(value="/upload_image", method=RequestMethod.POST)
public @ResponseBody JsonResponse handleFileUpload(@RequestParam("file") MultipartFile file, @RequestParam("filename") String filename){
if (!file.isEmpty()) {
try {
String orgName =file.getOriginalFilename();
String filePath = "img_temp";
File dir = new File(filePath);
if (!dir.exists())
dir.mkdirs();
File serverFile = new File(dir.getAbsolutePath() + File.separator + orgName);
//Format check
if(!IsImage(serverFile)) {return new JsonResponse("FAIL","Is not an image: "+orgName);}
//Upload
try {
file.transferTo(serverFile);
} catch (IllegalStateException e) {
e.printStackTrace();
return new JsonResponse("FAIL","File uploaded failed: "+orgName);
}
catch (IOException e) {
e.printStackTrace();
return new JsonResponse("FAIL","File uploaded failed: "+orgName);
}
//Success
return new JsonResponse("OK","");
} catch (Exception e) {
return new JsonResponse("FAIL","File uploaded failed: "+file.getName() + " => " + e.getMessage());
}
} else {
return new JsonResponse("FAIL","File uploaded failed: "+ file.getName() + " because the file was empty.");
}
}
アプリケーションは、クラシファイド広告のいくつかの種類です。 2の画像の保存のための主な使用方法があります:アイテムのための画像(一般に公開)や画像一時項目について(パブリックでなく、特別なセキュリティを必要としない)
問題: はそれがあることが明らかになっていますこの画像記憶方法は非常に不安定である。 最初の問題 - 私は自分のアプリの.warファイルを展開するたびに、私は手動でイメージフォルダをバックアップし、配備されたアプリケーションにコピーする必要があります。 今日、高負荷のため、弾力のある豆のインスタンスが終了し、新しいインスタンスが作成されていました。すべての画像が失われました。だから間違いなくそれに対処しなければならない。
質問:
画像の保存を処理するための獣の方法は何ですか?
Amazon S3について考えていました。しかし、問題は、すべてのコードがローカルのAWS環境とのやり取りに基づいているため、ローカルマシン上でデバッグすることができないため、デバッグが難しいことです。これのための任意のソリューションかもしれない? S3ではなく、これは良いオプションと思われる。
他の小サブ質問:今のところ 、これは、画像がアップロードされているどのようなアルゴリズムである:フォームの投稿には 、画像を選択するボタンがあります。イメージが選択されると、コントローラー/upload_image
に送信され、一時フォルダーにアップロードされます。その後、ユーザーが最後のリクエストを送信すると、画像はimg_temp
からimages/*created_item_id*
に移動しました。このプロセスを適切に処理できますか?
S3を使用すると、なぜデバッグが難しくなりますか?あなたはどんな問題に直面しますか? – error2007s
ローカルマシンでデバッグできない – user1935987
はい、ローカルマシンでデバッグできます。プロジェクトにAWS SDKを追加し、AWS S3への画像のアップロードを処理するクラスを作成する必要があります。このクラスはあなたがデバッグするものです。 –