servlet代碼html
@MultipartConfig() @WebServlet(name = "test", urlPatterns = "*.do", initParams = { @WebInitParam(name = "", value = "") }, loadOnStartup = 3) public class TestServlet3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub process(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub process(req, resp); } private void process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Part p = req.getPart("f"); BufferedReader br = new BufferedReader(new InputStreamReader( p.getInputStream())); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } } }
很是簡單的代碼,讀取上傳文件內容,而後輸出到控制檯。java
頁面代碼apache
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">tomcat
<html>ide
<head>post
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">ui
<title>Insert title here</title>url
</head>spa
<body>orm
<form action="a.do" enctype="multipart/form-data">
<input type="file" name="f" >
<input type="submit" value="submit">
</form>
</body>
</html>
問題來了,提交報錯
嚴重: Servlet.service() for servlet [test] in context with path [/tomcat7test] threw exception [org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header is null] with root cause org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header is null at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:806) at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:261)
後來查了查資料,form表單必需要設置method=post和enctype=multipart/form-data