2016-06-16 29 views
1

spring mvcを使用して画像アップロードアプリを作成しています。画像を外部フォルダに保存しました。画像を保存するためのコードは次のようである:Spring MVCはアップロードされた画像を外部フォルダに表示します

MultipartFile productImage = product.getProductImage(); 

     path= Paths.get("/oms/images/"+product.getProductName()+".jpg"); 

     System.out.println(path.toString()); 
     if(productImage!=null && !productImage.isEmpty()){ 

      try { 
       productImage.transferTo(new File(path.toString())); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       throw new RuntimeException("Product Image Saving Failed ",e); 

      } 
     } 

画像は、私は、JSPファイルに同じ画像を表示しようとしています、外部フォルダsuccessfully.Butに救われ、私はこのエラーを取得してしまいます... 。

http://localhost:8081/oms/images/Ss.jpg Failed to load resource: the server responded with a status of 404 (Not Found) 
http://localhost:8081/oms/images/pup.jpg Failed to load resource: the server responded with a status of 404 (Not Found) 

画像を表示するためのコードが

<img src="<c:url value="/oms/images/${product.productName}.jpg"/>"/> 

は、私は同じ問題のためのリンクのいくつかのより多くのカップルを見た...このようなものですが、ほとんどの質問は異なるに画像を保存したいとしていますwebapp(明らかに)よりディレクトリ!

問題を確認してください。私は何かを欠いている、外部リソースを春に追加する方法はありますか?ユーザーがアップロードした画像をjspページに表示するにはどうすればよいですか。

乾杯!前もって感謝します !!

+0

さらに必要なファイルを追加する必要がある場合はお知らせください。 BeanクラスやapplicationContext.xmlファイルと同様です。 – shiva

答えて

6

を使用して要求としてページ.. @ WebServlet( "/ FetchFile")は呼び出されませんでした。私はあなたがここにあなたの完全なパスを与える必要があります...

<mvc:resources mapping="/images/**" location="file:///${fullPath}/oms/images/" /> 

$ {をフルパス}それをGoogleで検索し、Spring MVCのディスパッチャ-servlet.xmlに私たちは、このように外部リソースを追加することができます解決策を見つけました。.. 。

その後、JSPページから、あなたがこのようなJSPファイルを呼び出すことができます....

<img src="/images/${product.productName}.jpg" alt="image"/> 

は完全な一日を過ごした後、私は最終的に解決策を持って、それは私のために働きました。乾杯!!!!ありがとう@Rizstien

1

jspコードはWebコンテキスト内でのみ機能するため、サーブレットを使用してWebコンテキスト外のイメージを取得できます。 JSPから例

@WebServlet("/FetchFile") 
public class FileServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     String filename = request.getParameter("productName"); 
     File file = new File("/oms/images/"+filename); 
     response.setHeader("Content-Type", getServletContext().getMimeType(filename)); 
     response.setHeader("Content-Length", String.valueOf(file.length())); 
     response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\""); 
     Files.copy(file.toPath(), response.getOutputStream()); 
    } 

} 

、それは私が@WebServlet( "/ FetchFile")を呼び出してみました場合は、上記の溶液が...私のために動作しませんでした

<img scr="FetchFile?productName=${product.productName}.jpg"> 
+0

あなたは私がこのメソッドをスプリングコントローラに追加してからjspページからこのメソッドを呼び出す必要があることを意味しますか? – shiva

+0

はい!それは本質的にはアヤックスコールになるでしょう – Rizstien

+0

大丈夫です!私に試してみましょう..助けてくれてありがとう – shiva

関連する問題