为什么servlet没有检索到这个部分?它显示null作为文件名

Suh*_*pta 8 java servlets multipartform-data java-ee

HTML片段发送post一个请求servlet命名的servlet.请求是类型multipart/form-data.But servlet什么都没找到,并为我尝试检索的部分的名称打印null.这是为什么 ?

<form method="post" action="servlet" enctype="multipart/form-data">
        <input type="file" value="browse" name="FileShared" />
        <input type="submit" value="submit" />
 </form>
Run Code Online (Sandbox Code Playgroud)
import javax.servlet.http.Part;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

    @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/plain");
    //String fileName = request.getPart("FileShared").getName(); 
    // Throws a nullpointer exception if I don't comment the above statement
    PrintWriter writer = response.getWriter();
    //writer.println(fileName);
    Collection<Part> c = request.getParts();
    Iterator i = c.iterator();
    while(i.hasNext()) {
        writer.println("Inside while loop"); // This statement never gets printed
        writer.println(i.next());
    }
    writer.println("outside while loop"); // Only this statement gets printed
}
Run Code Online (Sandbox Code Playgroud)

SAN*_*NN3 14

如果要使用Servlet 3.0 HttpServletRequest#getParts()方法,则必须使用注释来指定servlet @MultipartConfig.

示例:

@WebServlet(urlPatterns={"/SampleServlet"})
@MultipartConfig
public class SampleServlet extends HttpServlet {

}
Run Code Online (Sandbox Code Playgroud)