2015-12-01 3 views
0

Я хочу загрузить несколько файлов на сервер и получить параметр «testname» на странице JSP. Но он всегда возвращает нулевое значение. Я нашел причину ошибки. Из-за "enctype =" multipart/form-data "". Если я удалю его из формы, я могу получить параметр, но я не могу загрузить несколько файлов на сервер. Как я могу сделать их обоих?Не удается получить параметр в сервлете

Lib: http://www.java2s.com/Code/Jar/c/Downloadcosmultipartjar.htm

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <form action="UploadServlet" method="post" enctype="multipart/form-data"> 
      <input name="testname" type="text"> 
      <input type="file" id="file" name="file1" accept="image/*" multiple="muliple" required/><br> 
      <input type="submit"/> 
      <br><br> ${requestScope.message} 
     </form> 
    </body> 
</html> 

UploadServlet.java

package MyPackage; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.File; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import com.oreilly.servlet.multipart.MultipartParser; 
import com.oreilly.servlet.multipart.Part; 
import com.oreilly.servlet.multipart.FilePart; 
/** 
* Servlet implementation class UploadServlet 
*/ 
@WebServlet("/UploadServlet") 
public class UploadServlet extends HttpServlet { 
    private String fileSavePath; 
    private static final String UPLOAD_DIRECTORY = "Upload"; 

    public void init() { 
     fileSavePath = getServletContext().getRealPath("/") + File.separator + UPLOAD_DIRECTORY;/*save uploaded files to a 'Upload' directory in the web app*/ 
     if (!(new File(fileSavePath)).exists()) { 
      (new File(fileSavePath)).mkdir(); // creates the directory if it does not exist   
     } 
    } 

    @Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { 
     String testname=request.getParameter("testname"); 
     System.out.print(testname); 
     String resp = ""; 
     int i = 1; 
     resp += "<br>Here is information about uploaded files.<br>"; 
     try { 
      MultipartParser parser = new MultipartParser(request, 1024 * 1024 * 1024); /* file limit size of 1GB*/ 
      Part _part; 
      while ((_part = parser.readNextPart()) != null) { 
       if (_part.isFile()) { 
        FilePart fPart = (FilePart) _part; // get some info about the file 
        String name = fPart.getFileName(); 
        if (name != null) { 
         long fileSize = fPart.writeTo(new File(fileSavePath)); 
         resp += i++ + ". " + fPart.getFilePath() + "[" + fileSize/1024 + " KB]<br>"; 
        } else { 
         resp = "<br>The user did not upload a file for this part."; 
        } 
       } 
      }// end while 
     } catch (java.io.IOException ioe) { 
      resp = ioe.getMessage(); 
     } 
     request.setAttribute("message", resp); 
     getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); 
    } 

} 
+1

возможно дубликат http://stackoverflow.com/questions/15729777/servlet-get-parameter-from-multipart-form-in-tomcat-7 и http://webproverka.com///stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using-jsp-servlet – Srinu

+0

большое спасибо. я попробую его –

ответ

2

enctype="multipart/form-data" При использовании, вы не получите ваши параметры от вызова request.getParameter(). Теперь параметры являются частью потока.

Я предлагаю вам проверить вопрос How to upload files to server using JSP/Servlet?

+0

спасибо большое. я попробую –