2017-04-24 45 views
0

我在這裏得到了同樣的問題是我的代碼上傳的文件是沒有得到保存在資源下的webapps

@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/imaged中。

+0

我認爲你應該把圖像存儲在一個孤立的位置,並且不要修改你的網絡應用程序的資源,在這種情況下,如果你有一些存儲庫你是不同步的,它不是一個好的做法 – cralfaro

+0

您好cralfaro「如果你有一些存儲庫,你是不同步的「你能說清楚嗎? –

+0

當然,如果您將圖像存儲在WEB-INF /資源內部,它就在您的項目結構中,並且您還有圖像,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

嗨杜拉布感謝,它的工作,現在有沒有辦法解決這個問題在STS或日食,因爲我遵循使用Intellij Idea並實現上述代碼的udemy課程,但是在編碼課程後說改變輸出目錄在項目結構> artifacts>輸出目錄(即根據我的理解,它出現在Eclipse構建路徑>源的情況下),但即使進行更改,我沒有得到所需的輸出。 –