2017-04-24 1 views
0

内のリソースの下で救われていない私はここで同じ問題を取得しています私のコードアップロードされたファイルは、Webアプリケーション

@RequestMapping(value = "/admin/productInventory/addProduct", method = RequestMethod.POST) 
    public String addProductInInventory(@ModelAttribute("product") Product product, HttpServletRequest request) { 
     productDao.addProduct(product); 

     MultipartFile productImage = product.getProductImage(); 
     String rootDirectory = request.getSession().getServletContext().getRealPath("/ "); 
     System.out.println("rootDirectory >>>"+rootDirectory); 
     path = Paths.get(rootDirectory + "\\WEB-INF\\resources\\images\\" +product.getProductName()+"_"+product.getProductId()); 

     if(productImage != null && !productImage.isEmpty()) { 
      try{ 
       productImage.transferTo(new File(path.toString())); 
       System.out.println("actual path>>>" +path.toString()); 
      }catch(Exception e){ 
       e.printStackTrace(); 
       throw new RuntimeException("Product image saving faild."); 
      } 
      } 
     return "redirect:/admin/productInventory"; 
    } 

は今ファイルがパスに救われている>>

C:\ユーザー\ rajan \ Documents \ workspace-sts-3.7.3.RELEASE.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ MusicStore \ WEB-INF \ resources \ images \

アップロードされたファイル私のIDEのパッケージエクスプローラでイメージ化されたwebapps/resources /には表示されません。

+0

私はあなたがあなたが非同期であり、その良い練習ではないリポジトリを持っている場合、このケースであなたのWebアプリケーションのリソースを変更しないでください、イメージを隔離された場所に格納するべきだと思います – cralfaro

+0

hi cralfaro your statement "あなたが非同期であるいくつかのリポジトリを持っている "あなたはそれを詳しく教えてもらえますか? –

+0

もちろん、イメージをWEB-INF/resourcesの中に保存すると、プロジェクトの構造の中にあります。そこにはイメージ、CSS、HTMLなどもあります。ユーザーがアップロードしたファイルでそのコンテンツを変更すると、サーバーにのみ格納され、サーバーを移行するか、別のコンテナに移動する場合は、決してコミットしないため、ローカルリポジトリと同期化されていないすべてのイメージが表示されます。あなたの戦争を孤立させないようにし、 "/ home/rajan/app/images"のようなグローバルパスや、あらゆるサーバの一般的なものにそれらのイメージを保存してください。 – cralfaro

答えて

3

これはおそらく、Eclipseから直接プロジェクトを実行しているためです。そうすると、WARが(ワークスペース内に)存在する場所になります。このパスはeclipseによって使用されます。この場合、C:\Users\rajan\Documents\workspace-sts-3.7.3.RELEASE.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MusicStoreはコンテキストベースパスです。それがファイルがそこに保存されている理由です。ターミナルからtomcatを実行しようとすると、目的の場所に移動します。

+0

こんにちはDurlabhありがとうございました、それは働いて、今STSまたは日食でこのことを修正する方法があります。Intellij Ideaを使用して上記のコードを実装するudemyのコースに従っていますが、コーディング後に出力ディレクトリプロジェクト構造>成果物>出力ディレクトリ(つまり、私の理解によれば、Eclipseの場合はjava buildpath> sourceの下にあります)でも、変更を行った後でも、出力が得られません。 –

関連する問題