1.导入jar包commons-io-2.11.0.jar 和commons-fileupload-1.4两个包 没有就直接百度官网下载
2.前端写个测试代码
<form action="tupian.do" method="post" enctype="multipart/form-data">
<input type="file" name="photo">
<input type="text" name="uname">
<input type="submit" value="提交">
</form>
3.工具类直接复制,注意需修改request.getServletContext().getRealPath(“/userFile”);路径,为你自己保存的路径,路径下要有一张图片
package com.atguigu.axios;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class FileUploadUtil {
public static Map<String, String> imgFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
String uploadFilePath = request.getServletContext().getRealPath("/userFile");
if (isMultipart) {
HashMap<String, String> map = new HashMap<>();
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setSizeMax(1024 * 1024 * 4);
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = item.getName();
if (fileName != null && !"".equals(fileName)) {
String s = fileName.substring(fileName.lastIndexOf('.') + 1);
if (!"jpg".equals(s) && !"gif".equals(s) && !"bmp".equals(s) && !"png".equals(s) && !"txt".equals(s)) {
out.print("<script>alert('文件格式不正确!只能上传图片');location.href='/stuhome/index/homeAdd.html'</script>");
} else {
String uuid = UUID.randomUUID().toString();
File saveFile = new File(uploadFilePath + "/" + uuid + "_" + fileName);
item.write(saveFile);
String homeImg = uuid + "_" + fileName;
map.put("imgName", homeImg);
}
}
} else {
String fieldName = item.getFieldName();
String string = item.getString("utf-8");
map.put(fieldName, string);
}
}
return map;
} catch (Exception e) {
e.printStackTrace();
out.print("<script>alert('文件大小超出范围,只能上传最多4M的文件!');location.href='/stuhome/index/homeAdd.html'</script>");
}
}
return null;
}
}
4.servlet部分
@WebServlet("/tupian.do")
public class AxiosServlet03 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String> map = FileUploadUtil.imgFile(request, response);
String imgName = map.get("imgName");
String uname = map.get("uname");
}
}