主题
附件上传
引入依赖
xml
<dependency>
<groupId>com.wueasy.cloud</groupId>
<artifactId>wueasy-cloud-web-file</artifactId>
<version>最新版本</version>
</dependency>
工具类
工具类文件路径com.wueasy.cloud.web.file.util.FileUitl
java
public class FileUitl {
/**
* 上传文件
* @author: fallsea
* @param file
* @return
* @throws InvokeException
*/
public static FileVo upload(MultipartFile file);
/**
* 上传文件
* @author: fallsea
* @param file
* @param businessType 业务类型
* @return
* @throws InvokeException
*/
public static FileVo upload(MultipartFile file,String businessType);
}
配置servlet接收文件大小
如果未配置,提交大一点的文件,将会出现错误。
yaml
spring:
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
示例
java
/**
* 附件上传
* @author: fallsea
* @version 1.0
*/
@RestController
@RequestMapping("/file")
public class FileController {
/**
* 上传单个文件
* @author: fallsea
* @param file
* @param businessType
* @param response
* @return
*/
@RequestMapping(value = "/upload", method = { RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_VALUE)
public Result<FileVo> upload(@RequestParam("file") MultipartFile file,@RequestParam(value ="businessType",required = false)String businessType, HttpServletResponse response) {
FileVo fileVo = FileUitl.upload(file,businessType);
return new Result<FileVo>().setData(fileEntity);
}
}
配置说明
为了区分上传附件的业务类型,新版本增加了业务类型配置,可以配置不同的业务类型
提供统一的上传附件工具。
目前有9种上传方式:
- 上传到本地(上传到本地文件夹)
- 腾讯云对象存储
- 阿里云对象存储
- 又拍云对象存储
- 七牛云对象存储
- 华为云对象存储
- ucloud对象存储
- aws s3
- 百度云对象存储
- 金山云对象存储
httpAccessPath
必须可以访问到上传的地址,可以是映射等域名
多业务配置
可以配置多个不同的业务信息,通过不同的业务,上传至不同的文件位置。
type
:上传类型rootPath
:本地上传文件根目录maxSize
:文件最大大小,默认100MB
imageMaxSize
:图片最大大小,默认50MB
httpAccessPath
:http访问的路径,配置后返回文件地址默认会拼接路径imageAutoZip
:图片是否自动压缩,true
是,默认false
imageQuality
:图片质量,默认0.5
allowedUploadSuffix
:允许上传的后缀名(小写),默认全部,多个逗号分隔
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
工具类使用
工具类:com.wueasy.file.util.FileUitl
工具接口
可以通过以下方式进行上传文件处理
java
/**
* 上传文件
* @author: fallsea
* @param file
* @return
* @throws InvokeException
*/
public static FileEntity upload(File file);
/**
* 上传文件
* @author: fallsea
* @param file
* @param businessType 业务类型
* @return
* @throws InvokeException
*/
public static FileEntity upload(File file,String businessType);
/**
* 上传文件
* @author: fallsea
* @param is
* @param fileName 文件名称
* @return
* @throws InvokeException
*/
public static FileEntity upload(InputStream is,String fileName);
/**
* 上传文件
* @author: fallsea
* @param is
* @param fileName 文件名称
* @param businessType 业务类型
* @return
* @throws InvokeException
*/
public static FileEntity upload(InputStream is,String fileName,String businessType);
/**
* 文件上传
* @author: fallsea
* @param filepath 文件路径
* @return
* @throws InvokeException
*/
public static FileEntity upload(String filepath);
/**
* 文件上传
* @author: fallsea
* @param filepath 文件路径
* @param businessType 业务类型
* @return
* @throws InvokeException
*/
public static FileEntity upload(String filepath,String businessType);