2017-04-24 43 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构建路径>源的情况下),但即使进行更改,我没有得到所需的输出。 –