主题切换
📁 文件上传工具
📖 功能介绍
TIP
文件上传工具提供统一的文件上传解决方案,支持多种存储方式和业务场景,实现文件的安全高效管理。
🚀 快速开始
1. 添加依赖
xml
<dependency>
<groupId>com.wueasy.cloud</groupId>
<artifactId>wueasy-cloud-web-file</artifactId>
<version>${latest.version}</version>
</dependency>
2. 配置上传大小限制
yaml
spring:
servlet:
multipart:
max-file-size: 100MB # 单个文件大小
max-request-size: 100MB # 总请求大小
3. 使用工具类
java
@RestController
@RequestMapping("/file")
public class FileController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public Result<FileVo> upload(
@RequestParam("file") MultipartFile file,
@RequestParam(value = "businessType", required = false) String businessType) {
FileVo fileVo = FileUitl.upload(file, businessType);
return new Result<FileVo>().setData(fileVo);
}
}
⚙️ 核心功能
1. 文件上传工具类
java
public class FileUitl {
/**
* 基础上传方法
* @param file 文件对象
* @return FileVo 文件信息
*/
public static FileVo upload(MultipartFile file);
/**
* 带业务类型的上传方法
* @param file 文件对象
* @param businessType 业务类型
* @return FileVo 文件信息
*/
public static FileVo upload(MultipartFile file, String businessType);
}
2. 支持的存储方式
存储类型 | 配置值 | 说明 |
---|---|---|
本地存储 | LOCAL | 存储到本地文件系统 |
腾讯云 | COS | 腾讯云对象存储 |
阿里云 | OSS | 阿里云对象存储 |
华为云 | OBS | 华为云对象存储 |
又拍云 | USS | 又拍云对象存储 |
七牛云 | KODO | 七牛云对象存储 |
UCloud | UFILE | UCloud对象存储 |
AWS | S3 | AWS S3存储 |
百度云 | BOS | 百度云对象存储 |
金山云 | KS3 | 金山云对象存储 |
📝 配置说明
1. 通用配置参数
参数 | 说明 | 默认值 | 示例 |
---|---|---|---|
type | 存储类型 | - | LOCAL/COS/OSS等 |
rootPath | 本地存储根目录 | - | D:/file |
maxSize | 文件大小限制 | 100MB | 50MB |
imageMaxSize | 图片大小限制 | 50MB | 20MB |
httpAccessPath | 访问地址前缀 | - | http://domain.com |
imageAutoZip | 图片自动压缩 | false | true |
imageQuality | 压缩图片质量 | 0.5 | 0.2 |
allowedUploadSuffix | 允许的文件后缀 | 全部 | jpg,png,pdf |
primary | 是否为主配置 | false | true |
2. 对象存储配置参数
参数 | 说明 | 默认值 | 示例 |
---|---|---|---|
secretId | 访问密钥ID | - | AKIDxxx |
secretKey | 访问密钥Key | - | xxx |
bucketName | 存储桶名称 | - | my-bucket-1250000000 |
region | 存储桶所在地域 | - | ap-guangzhou |
📋 示例
yaml
wueasy :
file:
demo: #业务1
upload : #上传配置
type: bos #上传类型
rootPath: D:/file #文件上传根目录
maxSize: 50MB #文件最大大小
httpAccessPath: https://wueasy.cdn.bcebos.com #http访问的路径
imageAutoZip: true #图片是否自动压缩,true是,默认false
imageQuality: 0.5 #图片质量,默认0.5
os : #对象存储配置
secretId :
secretKey :
bucketName : #存储桶名称
region : #设置bucket的区域
demo2: #业务2
upload: #上传配置
type: local #上传类型
rootPath: D:/file #文件上传根目录
maxSize: 50MB #文件最大大小
httpAccessPath: http://127.0.0.1:1000 #http访问的路径
imageAutoZip: true #图片是否自动压缩,true是,默认false
imageQuality: 0.5 #图片质量,默认0.5
设置主上传配置(默认上传配置)
当通过业务类型获取不到配置信息,会使用默认配置。
primary
:主要的,默认的,可以指定,如果未指定,默认第一个
yaml
wueasy :
file :
demo: #业务类型
primary: true
设置允许上传的文件类型
allowedUploadSuffix
: 设置允许上传的文件类型,多个逗号分隔
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
allowedUploadSuffix: #设置允许上传的文件类型,多个逗号分隔
配置上传文件大小
maxSize
:上传的文件最大大小限制,默认100MB
imageMaxSize
:上传的图片最大大小限制,默认50MB
,3.3.0新增
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
maxSize: 100MB #上传的文件最大大小限制
imageMaxSize: 50MB #上传的图片最大大小限制
图片压缩
提供图片自动压缩处理,减少访问流量,支持以下几种图片压缩(jpg|jpeg|png)
yaml
wueasy:
file:
demo: #业务类型
upload : #上传配置
imageAutoZip: false #图片是否自动压缩,true是,默认false
imageQuality: 0.2 #图片质量,默认0.5
上传到本地
把附件上传到本地文件夹中。
修改配置文件:
rootPath
:本地文件夹的根目录,附件会上传到此文件夹maxSize
:上传的文件最大大小限制,默认100MB
imageMaxSize
:上传的图片最大大小限制,默认50MB
,httpAccessPath
:http访问的根路径,配置后,文件返回的地址,会自动加上此路径
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: LOCAL
rootPath: D:/file #文件上传根目录
maxSize: 50MB #文件最大大小
httpAccessPath: #http访问的路径
上传到腾讯云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置腾讯云对象存储访问的地址secretId
:APPIDsecretKey
:APP密钥bucketName
:bucket 的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式region
:设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: COS
maxSize: 50MB #文件最大大小
httpAccessPath: https://hao54.oss-cn-hangzhou.aliyuncs.com #http访问的路径
os : #对象存储配置
secretId :
secretKey :
bucketName : test-1251238510 #bucket 的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
region : ap-shanghai #设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
上传到阿里云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:APPIDsecretKey
:APP密钥bucketName
:bucket 的命名规则为{name} ,此处填写的存储桶名称必须为此格式region
:设置bucket的区域, COS地域的简称请参照 https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.6.571.3ac87f5e7vtneC
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: OSS
maxSize: 50MB #文件最大大小
httpAccessPath: https://hao54.oss-cn-hangzhou.aliyuncs.com #http访问的路径
os : #对象存储配置
secretId :
secretKey :
bucketName : hao54 #bucket 的命名规则为{name} ,此处填写的存储桶名称必须为此格式
region : https://oss-cn-hangzhou.aliyuncs.com #设置bucket的区域, COS地域的简称请参照 https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.6.571.3ac87f5e7vtneC
上传到又拍云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:操作员名称secretKey
:密码bucketName
:空间名称
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: USS
maxSize: 50MB #文件最大大小
httpAccessPath: https://hao54.oss-cn-hangzhou.aliyuncs.com #http访问的路径
os : #对象存储配置
secretId :
secretKey :
bucketName : hao54
上传到七牛云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:操作员名称secretKey
:密码bucketName
:空间名称region
:区域,参考地址:https://developer.qiniu.com/kodo/1671/region-endpoint-fq
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: KODO
maxSize: 50MB #文件最大大小
httpAccessPath: https://hao54.oss-cn-hangzhou.aliyuncs.com #http访问的路径
os : #对象存储配置
secretId:
secretKey:
bucketName: fallsea
region: zone0
上传到华为云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:操作员名称secretKey
:密码bucketName
:空间名称region
:Endpoint配置, OBS为每个区域提供Endpoint,用于处理各自区域的访问请求。
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: OBS
maxSize: 50MB #文件最大大小
httpAccessPath: https://hao54.oss-cn-hangzhou.aliyuncs.com #http访问的路径
os : #对象存储配置
secretId :
secretKey :
bucketName : wueasy #存储桶名称
region: obs.cn-east-2.myhuaweicloud.com
上传到ucloud对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:用户公钥secretKey
:用户私钥bucketName
:bucket名称region
:仓库地区 (eg: 'cn-bj')
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: UFILE
maxSize: 50MB #文件最大大小
httpAccessPath: https://hao54.oss-cn-hangzhou.aliyuncs.com #http访问的路径
os : #对象存储配置
secretId :
secretKey :
bucketName : wueasy
region: cn-sh2
上传到aws s3对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:用户公钥secretKey
:用户私钥bucketName
:bucket名称region
:地域配置,参考地址:https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_Region.html
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: S3
maxSize: 50MB #文件最大大小
httpAccessPath: https://wueasy.s3.eu-west-2.amazonaws.com #http访问的路径
os : #对象存储配置
secretId :
secretKey :
bucketName : wueasy
region: eu-west-2
上传到百度云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置阿里云对象存储访问的地址secretId
:用户的Access Key IDsecretKey
:用户的Secret Access KeybucketName
:空间名称region
:机房区域,参考:https://cloud.baidu.com/doc/BOS/s/Ojwvyrpgd
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: BOS
maxSize: 50MB #文件最大大小
httpAccessPath: https://wueasy.cdn.bcebos.com #http访问的路径
os : #对象存储配置
secretId:
secretKey:
bucketName: fallsea
region: bj.bcebos.com
上传到金山云对象存储
修改配置文件:
maxSize
:上传的文件最大大小httpAccessPath
:http访问的根路径,这里通常配置对象存储外网访问的地址secretId
:用户的Access Key IDsecretKey
:用户的Secret Access KeybucketName
:空间名称region
:机房区域,参考:https://docs.ksyun.com/documents/6761
yaml
wueasy :
file :
demo: #业务类型
upload : #上传配置
type: KS3
maxSize: 50MB #文件最大大小
httpAccessPath: https://fallsea.ks3-cn-shanghai.ksyun.com #http访问的路径
os : #对象存储配置
secretId:
secretKey:
bucketName: fallsea
region: ks3-cn-shanghai.ksyun.com
💡 最佳实践
1. 业务分类存储
- 不同业务类型使用不同配置
- 合理设置存储策略
- 统一管理访问路径
2. 图片处理优化
- 开启自动压缩
- 设置合理的质量参数
- 控制图片大小限制
3. 安全建议
- 严格限制文件类型
- 控制上传文件大小
- 配置安全的访问策略
🔍 常见问题
上传失败排查
- 检查配置参数
- 验证存储权限
- 确认网络连接
文件访问异常
- 验证访问路径配置
- 检查存储服务状态
- 确认文件权限设置