1、导包commons-fileupload-1.3.3.jar
commons-io-2.5.jar
2、实现类
public class UploadServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String path = this.getServletContext().getRealPath("/uploadimage");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> requestList = upload.parseRequest(req);
for (FileItem fileItem : requestList) {
if(fileItem.isFormField()){
if("username".equals(fileItem.getFieldName())){
req.setAttribute("username", fileItem.getString());
}
if("password".equals(fileItem.getFieldName())){
req.setAttribute("password", fileItem.getString());
}
}else {
String filename = fileItem.getName();
String uploadpath = path + "/" + filename;
req.setAttribute("filename", filename);
InputStream inputStream = fileItem.getInputStream();
FileOutputStream out = new FileOutputStream(uploadpath);
byte[] b = new byte[1024];
int k = 0;
while ((k = inputStream.read(b)) > 0) {
out.write(b, 0, k);
}
inputStream.close();
out.close();
fileItem.delete();
}
}
req.getRequestDispatcher("down.jsp").forward(req, resp);
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
3、表单
<form action="UploadServlet" enctype="multipart/form-data" method="post"
style="text-align: center; width: 400px">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>头像</td>
<td><input type="file" name="image"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>