2017-09-02 16 views
0

私は画像アップロードシステムを開発中です。ファイルはディレクトリに正常にアップロードされ、データベースに挿入されます(MySQL)。しかし、主な問題は、ディレクトリからそれらを取得する方法、JSPで<img>に表示することです。最も重要な質問は、アップロードされたファイルを保存する場所ですか?Spring MVC:JSPでアップロードされたファイルを取得する

マイプロジェクト構造は次のようになります。

ProjectName 
Java Resources 
    - src/main/java 
     - com.project.config 
     - com.project.controller 
     - com.project.model 
    - src/main/resources 
     - messages.properties 

src 
    - java 
    - resources 
    - webapp 
     - WEB-INF 
      - resources 
       - css 
       - js 
       - icons 
       - images (where I store the uploaded images) 
     - views 

静的ファイル(CSS、JSなど)私のファイルは私のプロジェクトであるときに今の

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/"); 
} 

はそれがうまく機能するためのJavaコンフィグ設定私はJSPでそれらを取得する前に、私はEclipseで私のプロジェクトをきれいにする必要があります。

しかし:毎回プロジェクトは、すべてのファイルは、(削除)消えてしまい再デプロイされているので

私は他の記事からわかるように、私は私のプロジェクトディレクトリにアップロードされたファイルを保存してはならないということです。私はそれらを外部のHTTPアクセス可能なフォルダに保存し、addResourceHandlerの設定を新しいディレクトリに変更する必要があります。

しかし、私のCSS、JS、アイコン、画像(CSSで使用される)ファイルはどこに保存する必要がありますか?同じフォルダに保存する必要がありますか?アップロードした画像を保存するか、プロジェクトフォルダ?しかし、ファイルが別のディレクトリでなければならない場合どのようにaddResourceHandlerのように設定する必要がありますか?

Spring MVCを使用してファイルをアップロードおよび取得する最適な方法は何ですか?

ありがとうございます。

答えて

0

システムの仕様によって異なります。更新ファイルがたくさんある場合は、URLをデータベースに保存し、ファイルをサーバーの一部のディレクトリに保存する方がよいでしょう。詳細については、ここでこのジレンマについての議論があります:https://habiletechnologies.com/blog/better-saving-files-database-file-system/

ここで私たちはどのようにそれらをjspで表示できますか?

<img src="${pageContext.request.contextPath}/getImage/${urlToPicture}"> 
:クライアント側で

@RequestMapping(value = "/getImage/{imagePath}") 
    @ResponseBody 
    public byte[] getImage(@PathVariable String imagePath, HttpServletRequest request) throws IOException { 

     String rpath = "yourFileStoringDirectoryURL" + imagePath + ".jpg"; 
     Path path = Paths.get(rpath); 
     byte[] data = Files.readAllBytes(path); 
     return data; 
} 

2):サーバー側で

1):あなたはこのコードを試すことができます

関連する問題