1、设置表单
要求:
- <form>表单中写入enctype属性,enctype=“multipart/form-data”
- 表单提交方式必须是POST,method=“post”
<form action="<%=request.getScheme()%>://<%=request.getServerName()%>:<%=request.getServerPort()%><%=request.getContextPath()%>/book?method=uploading" enctype="multipart/form-data" method="post">
用户名:<input type="text" name="username"/><br>
头 像:<input type="file" name="file"/><br>
<input type="submit" value="上传"/>
</form>
2、设置类
- 添加注解(@MultipartConfig)
@WebServlet("/book")
@MultipartConfig // <--- 注 重 点
public class BookServlet extends HttpServlet {
- 获取流
// 文件上传方法
public void upLoading(HttpServletRequest req) throws IOException, ServletException {
// 获取表单中的传入的用户名
String username = req.getParameter("username");
System.out.println("用户名:"+username);
// 通过req(请求对象)获取Part对象
Part file = req.getPart("file"); // <--- "file"是
// 获取文件的名称
String submittedFileName = file.getSubmittedFileName();
// 获取图片的输入流
InputStream is = file.getInputStream();
// 创建输出流,输出到本地
OutputStream fileOutputStream = new FileOutputStream("D:\\IMG\\"+submittedFileName);
byte[] b = new byte[1024*1024];
int len = -1;
while ((len = is.read(b)) != -1) {
fileOutputStream.write(b,0,len);
}
fileOutputStream.close();
}