2012-03-22 38 views
0

我正在开发和使用eclipse IDE的应用程序。我的应用程序具有文件上传功能。上传的文件没有保存到webcontent目录

我能够实现如何上传文件并保存它。但问题是上传的文件没有存储到我的动态Web项目目录中。

文件上传商店商品到我的服务器目录具有路径.metadata文件夹

文件:/// E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/ wtpwebapps/

我想我的上传文件夹,存储到具有含图片文件夹,像WebContent/upload/images文件夹上传我的WebContent文件夹。

毫无疑问,我可以查看图像文件,但是我想要的路径就像上面那样。 下面的代码我使用的存储上传的文件

@RequestMapping(value = "/company/UploadFile.action", method = RequestMethod.POST) 
    public @ResponseBody String uploadFile(FileUploadBean uploadItem, BindingResult result,HttpServletRequest request, HttpServletResponse response) { 
     System.out.println("FILE UPLOAD ITEM SI SSLSL ::"+uploadItem); 

     ExtJSFormResult extjsFormResult = new ExtJSFormResult(); 

     if (result.hasErrors()){ 
      for(ObjectError error : result.getAllErrors()){ 
       System.err.println("Error: " + error.getCode() + " - " + error.getDefaultMessage()); 
      } 

      //set extjs return - error 
      extjsFormResult.setSuccess(false); 

      return extjsFormResult.toString(); 
     } 

     // Some type of file processing... 
     System.err.println("-------------------------------------------"); 
     System.err.println("Test upload: " + uploadItem.getFile().getOriginalFilename()); 
     System.err.println("-------------------------------------------"); 

     try{ 

      MultipartFile file = uploadItem.getFile(); 
      String fileName = null; 
      InputStream inputStream = null; 
      OutputStream outputStream = null; 
      if (file.getSize() > 0) { 
       inputStream = file.getInputStream(); 
       /*if (file.getSize() > 10000) { 
        System.out.println("File Size:::" + file.getSize()); 
        extjsFormResult.setSuccess(false); 

        return extjsFormResult.toString(); 
       }*/ 
       System.out.println("also path ::"+request.getRealPath("") + "/upload/images/"); 
       System.out.println("PATHI SIS SIS"+this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()); 
       System.out.println("size::" + file.getSize()); 

       InetAddress addr = InetAddress.getLocalHost(); 
       byte[] ipAddr = addr.getAddress(); 

       System.out.println("HOST NAME"+request.getRealPath("ResourceMgt")); 
       System.out.println("HOST ADDR"+addr.getHostAddress()); 
       System.out.println("HOST "+request.getRequestURI()); 
       System.out.println("HOST "+request.getRequestURL()); 

       fileName = request.getRealPath("") + "/upload/images/" 
         + file.getOriginalFilename(); 
       outputStream = new FileOutputStream(fileName); 
       System.out.println("FILEN ANEM AND PATH IS ::"+fileName); 
       System.out.println("fileName:" + file.getOriginalFilename()); 

       int readBytes = 0; 
       byte[] buffer = new byte[40000]; 
       while ((readBytes = inputStream.read(buffer, 0, 40000)) != -1) { 
        outputStream.write(buffer, 0, readBytes); 
       } 

       companyservice.saveImages(file.getOriginalFilename(),fileName); 

       outputStream.close(); 
       inputStream.close(); 
      } 
     }catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 

     //set extjs return - sucsess 
     extjsFormResult.setSuccess(true); 

     return extjsFormResult.toString(); 
    } 

请建议我如何可以存储上传到具有图片上传文件夹的文件夹我的WebContent文件。我上面的代码工作完美只是有一些指定路径的问题。

回答

0

您是否尝试更改outputStream的目标?

fileName = request.getRealPath("") + "/upload/images/" 
+ file.getOriginalFilename(); 

代替request.getRealPath("")把一个绝对目的地或类路径玩。例如:

fileName = "/opt/tomcat/webapps/upload/images/" 
+ file.getOriginalFilename(); 
+0

能否请你告诉我,我怎样才能在我的Java类 – 2012-03-22 12:21:06

+0

那么在WebContent路径,它实际上还要考虑那种你正在开发的应用程序。但是...经历这个页面:http://forums.whirlpool.net.au/archive/1232043 – 2012-03-22 13:40:42

0

论坛成员

现在我能够成功上传的文件,但文件获取存储在服务器上部署的目录。

只要我删除该项目,并重新部署该项目到我的Tomcat服务器6.0所有我已经上传的文件会从已删除。

我使用JAVA作为我的服务器端技术与Tomcat服务器6.0。

0

我能够成功上传文件,但文件被存储到服务器上的已部署目录。

只要我删除该项目,并重新部署该项目到我的Tomcat服务器7.0所有我已经上传的文件会从已删除。

我使用JAVA和JSF在Eclipse IDE中我的服务器端技术与Tomcat服务器7.0