【问题标题】:How to upload a file to eclipse workspace如何将文件上传到eclipse工作区
【发布时间】:2015-06-17 16:50:29
【问题描述】:

我正在编写一个spring应用程序,它有上传文件的功能,我知道如何上传文件到h盘,但不知道如何在当前工作区进行。

这是我控制文件上传的 servlet:

@RequestMapping(value="UploadServlet", method=RequestMethod.POST)
public void uploadfile(HttpServletRequest request, HttpServletResponse response) throws IOException{
    filePath = "/resources/images/";
     System.out.println(filePath);
    isMultipart = ServletFileUpload.isMultipartContent(request);
      response.setContentType("text/html");
      java.io.PrintWriter out = response.getWriter( );
      if( !isMultipart ){
         out.println("<html>");
         out.println("<head>");
         out.println("<title>Servlet upload</title>");  
         out.println("</head>");
         out.println("<body>");
         out.println("<p>No file uploaded</p>"); 
         out.println("</body>");
         out.println("</html>");
         return;
      }
      DiskFileItemFactory factory = new DiskFileItemFactory();
      // maximum size that will be stored in memory
      factory.setSizeThreshold(maxMemSize);
      // Location to save data that is larger than maxMemSize.
      factory.setRepository(new File("c:\\temp"));

      // Create a new file upload handler
      ServletFileUpload upload = new ServletFileUpload(factory);
      // maximum file size to be uploaded.
      upload.setSizeMax( maxFileSize );

      try{ 
      // Parse the request to get file items.
      List fileItems = upload.parseRequest(request);

      // Process the uploaded file items
      Iterator i = fileItems.iterator();

      out.println("<html>");
      out.println("<head>");
      out.println("<title>Servlet upload</title>");  
      out.println("</head>");
      out.println("<body>");
      while ( i.hasNext () ) 
      {
         FileItem fi = (FileItem)i.next();
         if ( !fi.isFormField () )  
         {
            // Get the uploaded file parameters
            String fileName = fi.getName();

            // Write the file
            if( fileName.lastIndexOf("\\") >= 0 ){
               file = new File( filePath + 
               fileName.substring( fileName.lastIndexOf("\\"))) ;
            }else{
               file = new File( filePath + 
               fileName.substring(fileName.lastIndexOf("\\")+1)) ;
            }
            System.out.println("Printing that thing");
            System.out.println(filePath + 
               fileName.substring(fileName.lastIndexOf("\\")+1));
            System.out.println(fileName.substring(fileName.lastIndexOf("\\")+1));

            fi.write( file ) ;

         }
      }

   }catch(Exception ex) {
       System.out.println(ex);
   }
    }
}

我知道问题出在文件路径变量上,

filePath = "/resources/images/";

我希望将文件写入已部署的资源 --> webapp --> 资源 --> 图像

【问题讨论】:

    标签: java eclipse spring


    【解决方案1】:

    您可能希望使用ServletContext.html#getRealPath(java.lang.String) 将相对资源转换为真实的文件系统路径。

    String filePath = request.getServletContext().getRealPath("/resources/images/");
    

    请注意,归根结底,这与 Eclipse 及其管理服务器和部署的方式无关。事实上,Eclipse 可能会妨碍并导致您在独立 Web 服务器中不会​​遇到的问题。例如,当 Eclipse 检测到项目中的更改时,它会重新部署文件并可能覆盖您更改或上传的任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 2013-11-07
      • 1970-01-01
      • 2011-07-06
      • 2015-06-28
      • 2013-03-16
      • 2016-03-16
      • 2014-03-15
      相关资源
      最近更新 更多