Skip to content

📁 文件上传工具

📖 功能介绍

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七牛云对象存储
UCloudUFILEUCloud对象存储
AWSS3AWS S3存储
百度云BOS百度云对象存储
金山云KS3金山云对象存储

📝 配置说明

1. 通用配置参数

参数说明默认值示例
type存储类型-LOCAL/COS/OSS等
rootPath本地存储根目录-D:/file
maxSize文件大小限制100MB50MB
imageMaxSize图片大小限制50MB20MB
httpAccessPath访问地址前缀-http://domain.com
imageAutoZip图片自动压缩falsetrue
imageQuality压缩图片质量0.50.2
allowedUploadSuffix允许的文件后缀全部jpg,png,pdf
primary是否为主配置falsetrue

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:上传的图片最大大小限制,默认50MB3.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:APPID

  • secretKey: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

上传到阿里云对象存储

修改配置文件:

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对象存储

修改配置文件:

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 ID

  • secretKey:用户的Secret Access Key

  • bucketName:空间名称

  • 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 ID

  • secretKey:用户的Secret Access Key

  • bucketName:空间名称

  • 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. 安全建议

  • 严格限制文件类型
  • 控制上传文件大小
  • 配置安全的访问策略

🔍 常见问题

  1. 上传失败排查

    • 检查配置参数
    • 验证存储权限
    • 确认网络连接
  2. 文件访问异常

    • 验证访问路径配置
    • 检查存储服务状态
    • 确认文件权限设置