- 上传准备
需要在web文件夹下面创建一个userFile文件夹用来存放图片,这里有一个问题,userFile文件夹不能为空!!否则IDEA无法部署到out文件夹里,之后运行项目的话会出现找不到路径的问题,这个有点坑,可以在里面随便创个文件,我这里是创建的是a.txt。 - 工具类封装-FileUploadUtil
注意,工具类中的方法,传入参的参数是request和response,返回的是图片名字,图片的名字是用UUID拼接的,防止重复。里面的跳转路径可自行修改。
public class FileUploadUtil {
public static String imgFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
String uploadFilePath = request.getServletContext().getRealPath("/userFile");
if (isMultipart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
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;
return homeImg;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
out.print("<script>alert('文件大小超出范围,只能上传最多4M的文件!');location.href='/stuhome/index/homeAdd.html'</script>");
}
}
return null;
}
}
- servlet中使用该方法
直接调动即可,返回图片名称。
String homeImg = FileUploadUtil.imgFile(request, response);
- 运行效果
运行项目时IDEA会把userFile文件夹(再说一遍userFile文件夹不能为空!!!)部署到out中文件夹,调用上传图片方法时,图片是直接上传到out 文件夹下的,可用于表示层前端页面显示。
|