首页>代码>基于spring MVC上传文件(图片上传)简单实例,无UI界面>/MvcFileUpload/src/com/zking/mvcfileupload/action/FileUploadAction.java
package com.zking.mvcfileupload.action; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.zking.mvc.framework.Action; public class FileUploadAction extends Action { // 上传文件存储目录 private static final String UPLOAD_DIRECTORY = "upload"; // 上传配置 private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MB private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB @Override public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检测是否为多媒体上传 if (!ServletFileUpload.isMultipartContent(request)) { request.setAttribute("message", "Error: 表单必须包含 enctype=multipart/form-data"); System.out.println("Error: 表单必须包含 enctype=multipart/form-data"); return "success"; } // 配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中 factory.setSizeThreshold(MEMORY_THRESHOLD); // 设置临时存储目录 factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload upload = new ServletFileUpload(factory); // 设置最大文件上传值 upload.setFileSizeMax(MAX_FILE_SIZE); // 设置最大请求值 (包含文件和表单数据) upload.setSizeMax(MAX_REQUEST_SIZE); // 中文处理 upload.setHeaderEncoding("UTF-8"); // 构造临时路径来存储上传的文件 // 这个路径相对当前应用的目录 String uploadPath = request.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY; // 如果目录不存在则创建 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } try { // 解析请求的内容提取文件数据 @SuppressWarnings("unchecked") List<FileItem> formItems = upload.parseRequest(request); if (formItems != null && formItems.size() > 0) { // 迭代表单数据 for (FileItem item : formItems) { // 处理不在表单中的字段 if (!item.isFormField()) { String fileName = new File(item.getName()).getName(); String filePath = uploadPath + File.separator + fileName; File storeFile = new File(filePath); // 在控制台输出文件的上传路径 System.out.println(filePath); // 保存文件到硬盘 item.write(storeFile); request.setAttribute("message","文件上传成功!"); } } } } catch (Exception ex) { ex.printStackTrace(); request.setAttribute("message","错误信息: " + ex.getMessage()); } return "success"; } }
最近下载更多
没猫病 LV11
2021年10月15日
汤汤汤要学编程 LV11
2021年4月16日
松烟入墨2018 LV16
2020年7月14日
wssm2333 LV6
2020年4月23日
demper LV4
2020年3月25日
晓宋8888 LV3
2020年3月22日
wxd1997 LV13
2020年1月10日
gaopeng111 LV8
2019年11月6日
zywzywzyw1 LV17
2019年9月28日
二手玫瑰 LV15
2019年7月1日
最近浏览更多
微信网友_7041475584184320
6月17日
暂无贡献等级
微信网友_6680567232876544 LV8
2023年10月10日
luandjustin
2023年7月3日
暂无贡献等级
asadda LV2
2023年6月27日
joker1branch LV5
2023年6月19日
我睡觉时不困 LV7
2023年6月15日
彩色天空 LV5
2023年4月8日
洋葱007 LV5
2022年12月13日
与哲rhcy LV6
2022年12月4日
yymmdm LV6
2022年9月5日