java上传文件需要的依赖_SpringBoot使用commons-fileupload上传文件的类

网上找了一些,都是基本介绍,没有直接就可以使用类,在实际工作当中都有适合当前项目的上传文件的方法,本人写了一个类,比较基础,但呆以满足项目的上传文件功能,使用了commons-fileupload这个组件,代码如下:

首先要在maven中加入依赖

commons-fileupload

commons-fileupload

1.3.3

UploadUtil.javapackage cn.form1.utils;

import org.springframework.util.ClassUtils;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.http.HttpServletRequest;

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.*;

/**

* 文件上传类

*/

public class UploadUtil {

//上传的文件大小限制 (0-不做限制) ,单位:字节

private long maxSize = 0;

//允许上传的文件后缀,如:".jpg|.png|.git|.jpeg",为空不做限制

private String exts;

//保存根路径,会在tomcat的webapps自动创建该文件夹

private String rootPath = "uploadFile/";

//保存路径,如 "userimage"

private String savePath = "";

//子目录创建方式,默认:年-月

private  String subName = "yyyy-MM";

//是否启动时间格式的子目录

private boolean isSubName = true;

//上传的文件名称

private List fileNames;

//上传错误信息

private String error;

public UploadUtil() {

this.fileNames = new ArrayList();

}

public long getMaxSize() {

return maxSize;

}

public void setMaxSize(long maxSize) {

this.maxSize = maxSize;

}

public String getExts() {

return exts;

}

public void setExts(String exts) {

this.exts = exts;

}

public String getRootPath() {

return rootPath;

}

public void setRootPath(String rootPath) {

this.rootPath = rootPath;

}

public String getSavePath() {

return savePath;

}

public void setSavePath(String savePath) {

this.savePath = savePath;

}

public String getSubName() {

return subName;

}

public void setSubName(String subName) {

this.subName = subName;

}

public boolean getIsSubName() {

return isSubName;

}

public void setIsSubName(boolean isSubName) {

this.isSubName = isSubName;

}

public String getError() {

return error;

}

public void setError(String error) {

this.error = error;

}

public List getFileNames() {

return fileNames;

}

public void setFileNames(List fileNames) {

this.fileNames = fileNames;

}

/**

* 上传文件

* @param request 当前请求的request

*/

public boolean upload(HttpServletRequest request)  throws IllegalStateException, IOException {

//创建一个通用的多部分解析器

CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(

request.getSession().getServletContext());

//判断 request 是否有文件上传,即多部分请求,其实判断是否为(enctype="multipart/form-data" method="POST")

if(multipartResolver.isMultipart(request)){

//转换成多部分request

MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;

//取得request中的所有文件名

Iterator iter = multiRequest.getFileNames();

//记数器

int num = 0;

//web服务器文件根路径

String webFilePath;

//为批量上传,所以如果有下一个信息,能循环输出

while(iter.hasNext()){

webFilePath = "";

//取得上传文件

MultipartFile file = multiRequest.getFile(iter.next());

//如果type=file中有文件上传

if(!file.isEmpty()){

//取得当前上传文件的文件名称

String fileName = file.getOriginalFilename();

//获取文件大小,单位:字节

long fileSize = file.getSize();

/* 检查文件大小 */

if (!this.checkSize(fileSize)) {

this.setError("上传文件大小不符!");

return false;

}

//获取文件的后缀名

String suffixName = fileName.substring(fileName.lastIndexOf("."));

/* 判断文件后缀名是否合法 */

if(!this.checkExt(suffixName)){

this.setError("上传文件后缀不允许!");

return false;

}

//使用GUID重命名图片名称

fileName = UUID.randomUUID() + suffixName;

/* 获取Tomcat的webapps根目录 */

String projectPath = this.tomcatPath();

/* 是否生成子目录 */

String dateDir = this.dateDir();

//web服务器根目录文件路径

webFilePath = this.getRootPath() + this.getSavePath() + dateDir + fileName;

//文件最终保存全路径

String fileNamePath = projectPath + webFilePath;

//创建File对象

File localFile = new File(fileNamePath);

//检测是否存在目录,不存在则创建

if (!localFile.getParentFile().exists()) {

localFile.getParentFile().mkdirs();

}

//执行上传文件

file.transferTo(localFile);

}

//累加保存生成文件名

this.fileNames.add(num,webFilePath);

num++;

}

}

//没有上传任何文件,返回true,去判断返回文件List中的值

return true;

}

/**

* 检查文件大小是否合法

* @param size 文件大小,单位/字节

* @return boolean

*/

private boolean checkSize(long size) {

return !(size > this.getMaxSize()) || (0 == this.getMaxSize());

}

/**

* 检查上传的文件后缀是否合法

* @param ext 后缀

* @return boolean

*/

private boolean checkExt(String ext){

if(this.getExts().isEmpty()){

return true;

}else{

if(this.getExts().indexOf(ext) != -1){

return true;

}

}

return false;

}

/**

* 返回Tomcat的webapps根目录

* @return String 路径

*/

private String tomcatPath(){

//获取当前项目的运行环境根目录,如:/C:/myJavaEEWorkSpace/SpringGirl/target/classes/

String projectPath = ClassUtils

.getDefaultClassLoader()

.getResource("")

.getPath();

//返回Tomcat的webapps根目录 (考虑到每次发布会覆盖war,文件最好存在war外面)

projectPath = projectPath + "../../../";

return projectPath;

}

/**

* 是否生成子目录,返回子目录名称

* @return String 目录名称

*/

private String dateDir(){

//是否生成子目录

String dateDir;

if(this.getIsSubName()) {

//设置文件存放子目录

SimpleDateFormat df = new SimpleDateFormat(this.getSubName());// 设置日期格式

dateDir = df.format(new Date());// new Date()为获取当前系统时间

dateDir = dateDir + "/";

}else{

dateDir = "";

}

return dateDir;

}

}

使用方法/*

* 测试上文件传类

* */

@RequestMapping(value = "/uploadclass")

@ResponseBody

public String uploadclass(HttpServletRequest request) throws IllegalStateException, IOException{

UploadUtil upload = new UploadUtil();

upload.setMaxSize(50000);

upload.setExts(".jpg|.png|.gif|.jpeg");

upload.setSavePath("mydogimg/");

if(upload.upload(request)){

List list = upload.getFileNames();

String str = (String) list.get(0);

return str+"===";

}else{

return upload.getError();

}

}

支持单个或批量上传,如果type=file没有选择文件,就会返回空的字符串,上传文件是否为必须的需要用js去判断

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值