2015-06-17 7 views
-1

Я пишу приложение весны, у него есть функция для загрузки файла, я знаю, как загрузить файл в h-диск, но не знаю, как это сделать в текущей рабочей области.Как загрузить файл в рабочую область eclipse

Вот мой сервлет, который берет на себя управление загрузкой файла:

@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 -> ресурсы -> изображения

ответ

0

Возможно, вы захотите использовать ServletContext.html#getRealPath(java.lang.String), чтобы перевести относительный ресурс в реальный путь к файловой системе.

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

Обратите внимание, что, в конце концов, это как мало общего с Eclipse, и как это менеджеры серверов и развертывания. Фактически, Eclipse может мешать и вызвать проблемы, которые не будут возникать на автономном веб-сервере. Например, когда Eclipse обнаруживает изменения в проекте, он повторно развертывает файлы и может перезаписывать все, что вы изменили или загрузили.

Смежные вопросы