2016-11-03 6 views
0

ファイルシステムのspring mvcに画像をアップロードしたいと思います。私はそれを行うことができますが、プロジェクトを再デプロイすると、すべてのイメージはディレクトリから削除されます。今私の質問は永久にイメージをアップロードする方法ですか?私は実際のアプリケーションでこれをしたいです。春mvcの画像を他の場所に永久にアップロード

答えて

0

おそらく、あなたのプロジェクトのディレクトリ/ warの下にあなたの画像をアップロードしました。プロジェクト/戦争を展開/構築するたびに、画像が削除されます。

あなたのプロジェクト/戦争の外に画像ファイルを保存する必要があります。

実際のアプリケーションでは、アップロードした画像を別のサーバーに保存/配信することをおすすめします。 Amazon S3はかなり良いものです。データベースにS3ベースのURLに関連したオブジェクト/ファイル名を保存するだけです。彼らはあなたにもファイルをアップロードするためのJava APIを持っています。

+0

あなたの答えに感謝します。これに対して他の解決策はありませんか?私はこのようにしたい、私のアドレスは 'www.example.com'だと思うので、私はこの' www.example.com/upload/'のようなディレクトリを持ち、そこにアップロードされたすべてのイメージを保存したい。 – ali

0

前述のように、アップロードされたこれらの画像を保持するには、プロジェクト/ .WARファイルの外に保存することをお勧めします。この理由は既に経験したことですが、アプリケーションを再デプロイするたびに、展開された前のプロジェクト/ .WARに書き込まれたもの(アップロードされた画像)が失われます。

これらの画像を保存するためにAmazon S3バケットを利用することで提供されるソリューションは良い解決策であり、あなたが望むものを確実に達成することができます(www.example.com/upload/にこれらの画像をすべて表示します)。あなたのコントローラ内のspringMVCを使用すると、メソッドを設定することができますので、同じよう@RequestMappingアノテーションを割り当てる:

@Controller 
@RequestMapping("/") //this can map to your www.example.com 
public class MainController(){ 

    @RequestMapping("/upload") //this will then map to www.example.com/upload 
    public String showUploads(){   
     return "redirect:http://pathToAmazonS3Bucket" 
    } 
} 

SpringMVCでリダイレクトを使用すると、絶対URLパスにリダイレクトすることができます。 See docs

しかし、既に述べたように、あなたのプロジェクトパス/ WARファイルの外にイメージを保存する必要があります。 Amazon S3は機能しますが、ここで別の解決策を求めてからです。

すべてのイメージをPC上のファイルに保存してから、Python3またはNodeをHTTPサーバーとして実行できます。この解決策では、あなたのコンピュータとあなたのインターネット接続を利用して、あなたのイメージをウェブ上でホストする必要があります。これはあなたのPCをノンストップで走らせておくこと、または古いものをあなたのウェブサーバーとして使用することに慣れさせていることを前提としています。また、あなたのISPがあなたのネットワーク上のWebサーバーをホストしていることを前提としています。最後に、オンラインで多数のサービス(一部は無料で、一部は手数料が少ない)から独自のユニークなURLを取得することができます。この方法では、IPアドレスを入力する必要はありません。

No-IP.comのフリードメイン名を使用して、上記のネットワーク上で同様の設定を行っています。

また、ウェブでSpring Webアプリケーションをどのようにホストする予定ですか?あなたはオンラインホスティングサービスを介してこれをやっているのか、あなた自身をホストしていますか?あなた自身をホストしている場合は、Apache TomcatまたはGlassfishまたは別のコンテナ/アプリケーションサーバーを使用しますか?

関連する問題