2014-01-23 2 views
1

Ниже приведен мой полный код для загрузки файла на сервер с использованием обычной загрузки apache. Когда я тестирую эту функцию в новом проекте, она работает. Но когда я интегрировался в свой проект, он больше не работает. Я нашел проблему в «List fileItems = upload.parseRequest (запрос)»; fileItems есть нуль, пока это должно быть 1. Есть ли какой-то ват, что я могу решить эту проблему?Обычная загрузка файлов не работает

public void doPost(HttpServletRequest request, 
       HttpServletResponse response) 
       throws ServletException, java.io.IOException { 
     // Check that we have a file upload request 
     //isMultipart = ServletFileUpload.isMultipartContent(request); 
     response.setContentType("text/html"); 
     java.io.PrintWriter out = response.getWriter(); 
     if(!isMultipart){ 
     out.println("<html>"); 
     out.println("<head>")y 
     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 fieldName = fi.getFieldName(); 
      String fileName = fi.getName(); 
      String contentType = fi.getContentType(); 
      boolean isInMemory = fi.isInMemory(); 
      long sizeInBytes = fi.getSize(); 
      // 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)) ; 
      } 
      fi.write(file) ; 
      out.println("Uploaded Filename: " + fileName + "<br>"); 
     } 
     } 
     out.println("</body>"); 
     out.println("</html>"); 
    }catch(Exception ex) { 
     System.out.println(ex); 
    } 
    } 
+1

Имеет ли ваш элемент типа ввода (type = 'file') в jsp атрибут 'name'? – PopoFibo

+0

Нет, у меня нет. – ksh

+1

Попробуйте добавить его, контейнеры сервлетов имеют разные спецификации, и tomcat, похоже, нуждается в нем. – PopoFibo

ответ

0

Когда я протестировать эту функцию в новом проекте, он работает. Но когда я интегрировался в свой проект, он больше не работает.

Это, как правило, знак того, что версии библиотеки отличаются. Если вы используете maven, сравните графики зависимостей под общим артефактом apache, чтобы вы могли получить свой тестовый проект в той же версии.

+0

Я использую тот же файл библиотеки в моем проекте. – ksh

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

  • Нет связанных вопросов^_^