html 代码段向名为 servlet 的post
发送servlet
个请求。请求的类型为multipart/form-data
。但是servlet什么都没找到,并且为我尝试检索的部分的名称打印null。这是为什么 ?
<form method="post" action="servlet" enctype="multipart/form-data">
<input type="file" value="browse" name="FileShared" />
<input type="submit" value="submit" />
</form>
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
}
答案 0 :(得分:14)
如果要使用Servlet 3.0 HttpServletRequest#getParts()
方法,则必须使用@MultipartConfig
注释servlet。
示例:
@WebServlet(urlPatterns={"/SampleServlet"})
@MultipartConfig
public class SampleServlet extends HttpServlet {
}