2016-07-16 6 views
0

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*に移動しました。このプロセスを適切に処理できますか?

+0

S3を使用すると、なぜデバッグが難しくなりますか?あなたはどんな問題に直面しますか? – error2007s

+0

ローカルマシンでデバッグできない – user1935987

+0

はい、ローカルマシンでデバッグできます。プロジェクトにAWS SDKを追加し、AWS S3への画像のアップロードを処理するクラスを作成する必要があります。このクラスはあなたがデバッグするものです。 –

答えて

0

あなたのユースケースを見ると、AWS S3を統合する必要があります。そのため、AWS S3を統合する必要があります。

イメージストレージを扱う獣の方法は何ですか?

Amazon S3について考えていました。しかし、問題は - はすべてのコードが ローカルAWS環境とのやり取りに基づいているため、デバッグが難しいため、ローカルマシンでデバッグできません。これはおそらく の解決策ですか? S3ではなく、これは良いオプションと思われる。

AWS SDKとともにS3を実装すると、デバッグに関する問題が発生します。

他の小サブ質問:今のところ、これは画像 がアップロードされているどのようなアルゴリズムである:フォームの投稿には、画像を選択するボタンがあります。 一度イメージが選択されると/ upload_imageコントローラに送信され、 がtempフォルダにアップロードされます。その後、ユーザーが最後の リクエストを送信すると、img_tempからimages/に画像が移動されましたcreated_item_idこれは正しい方法ですか?

このプロセスは、細かいようだが、あなたがすることができる1つの以上の追加の変更は、画像のバックアップを持っているように、S3バケットにこのパスimages/*created_item_id*で画像をコピーしますcronジョブを開始しています。

関連する問題