Java文件上传工具类(基于commons-fileupload)

本文介绍了如何使用Java结合commons-fileupload库实现文件上传功能,包括用法示例和完整的工具类代码展示。通过简单实例演示了从表单提交到Controller的处理过程,并给出了上传后的返回结果。
摘要由CSDN通过智能技术生成

前言

基于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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值