前言
基于commons-fileupload,测试时使用的版本为 1.3.1,另外记得引入commons-io.jar(测试使用的版本为2.5);
如果在springmvc项目中使用,需要关闭其自身的上传功能,springboot项目也需要在配置中spring.servlet.multipart.enabled=false;
注意1:文件存放根目录(basePath)必须存在;
注意2:表单必须有method及enctype且method="post" enctype="multipart/form-data"
例如:<from method="post" enctype="multipart/form-data">;
用法举例一(参数最简版)
// 初始化上传工具类
UploadUtils uploadUtils = new UploadUtils(request);
// 设置文件存放的根目录
uploadUtils.setBasePath(ResourceUtils.getResource("static").getFile().getAbsolutePath() + File.separator + "fileupload");
// 上传并返回结果
ResultData resultData = uploadUtils.upload();
// 打印上传结果
System.out.println(JSONObject.toJSONString(resultData));
用法举例二(参数完整版)
// 初始化上传工具类
UploadUtils uploadUtils = new UploadUtils(request);
// 设置文件存放的根目录
uploadUtils.setBasePath(ResourceUtils.getResource("static").getFile().getAbsolutePath() + File.separator + "fileupload");
// 设置存放文件的自定义目录(位于根目录basePath下)
uploadUtils.setDirName("aaa" + File.separator + "bbb");
// 设置文件访问的根路径(比如:localhost:8080/xxx/fileupload,baseUrl就可以是其中的fileupload,但能不能访问到还要看具体项目配置)
uploadUtils.setBaseUrl("fileupload");
// 设置单个文件允许的最大值
uploadUtils.setFileSizeMax(1024 * 1024 * 1L);
// 设置所有文件允许的最大值
uploadUtils.setSizeMax(1024 * 1024 * 10L);
// 设置允许上传的文件类型
uploadUtils.setExtNames("jpg,png,gif");
// 单文件上传时,默认允许自定义文件名
//uploadUtils.setAllowRename(true);
//uploadUtils.setFileRename("自定义文件名");
// 自定义大文件临时缓存文件的路径(默认系统临时文件目录)
// uploadUtils.setTempPath("E:\\temp");
// 上传并返回本次上传结果(本次上传的整体成功或失败信息)
ResultData resultData = uploadUtils.upload();
// 打印整体上传结果
System.out.println(JSONObject.toJSONString(resultData));
// 上传成功时每个文件的上传结果(input[type=file]的name、、原始文件名、最终保存时的文件名、文件保存路径、访问路径)
System.out.println(JSONObject.toJSONString(uploadUtils.getUploadResults()));
// 或者下面这样也能输出上传结果
System.out.println(JSONObject.toJSONString(resultData.getObj()));
返回结果举例
{
"msg": "上传成功",
"obj": [
{
"fieldName": "idd",
"fileUrl": "/001.jpg",
"newFileName": "001.jpg",
"oldFileName": "001.jpg",
"savePath": "F:\\idea-workspace\\concise\\target\\classes\\static\\fileupload\\001.jpg"
},
{
"fieldName": "idd2",
"fileUrl": "/20191113105408364_384.jpg",
"newFileName": "20191113105408364_384.jpg",
"oldFileName": "001.jpg",
"savePath": "F:\\idea-workspace\\concise\\target\\classes\\static\\fileupload\\20191113105408364_384.jpg"
}
],
"success": true
}
***文件上传工具类源代码***
package org.soybean.utils.io;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
import org.soybean.bean.ResultData;
import org.soybean.utils.StringUtils;
/**
* 文件上传工具类
* 描述1:基于commons-fileupload,测试时使用的版本为1.3.1
* 描述2:如果在springmvc项目中使用,需要关闭其自身的上传功能,springboot项目也需要在配置中spr