# storage-spring-boot-starter
**Repository Path**: easy-coding-style/storage-spring-boot-starter
## Basic Information
- **Project Name**: storage-spring-boot-starter
- **Description**: 文件存储服务,支持本地存储、minio、fastdfs、阿里云OSS、七牛云OSS
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 6
- **Created**: 2023-04-20
- **Last Updated**: 2023-04-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# storage-spring-boot-starter
## 介绍
1. 文件存储服务,支持本地存储、minio、fastdfs、阿里云OSS、七牛云OSS
2. 目前只测试了SpringBoot 2.7.X版本
## 使用说明
### maven引入依赖
~~~
cn.iwenjuan
storage-spring-boot-starter
1.0.1-SNAPSHOT
~~~
### 启动类添加@EnableStorage注解
~~~
@SpringBootApplication
@EnableStorage
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
~~~
### application.yml配置示例
~~~
spring:
# 文件上传配置
storage:
# 允许上传文件最大大小,单位kb,默认10M
maxSize: 10485760
# 允许上传的文件格式,默认允许所有
allowed: "*"
# 不允许上传的文件格式
deny: ".sh,.java,.class,.py,.php"
# 存储平台,可选值:local,minio,fastdfs,aliyun,qiniu
platform: local
# 本地存储配置
local:
# 本地存储路径
path: /data/files
# 归类,支持按年(year)、按月(month)、按天(day)
classify: day
# minio配置
minio:
# minio地址
endpoint: http://minio.dev:9000
# minio账号
accessKey: minio账号
# minio秘钥
secretKey: minio秘钥
# minio存储桶名
bucketName: demo
# minio存储桶下的路径
path: /files
# 归类,支持按年(year)、按月(month)、按天(day)
classify: day
# fastdfs配置
fastdfs:
# 读取时间
so-timeout: 1000
# 连接超时时间
connect-timeout: 200
# tracker服务配置地址列表
tracker-list:
- fastdfs.dev:22122
# 阿里云OSS配置
aliyun:
# OSS节点地址
endpoint: https://xxx.aliyuncs.com
# accessKey
access-key: 阿里云平台的AccessKey
# secretKey
secret-key: 阿里云平台的SecretKey
# 存储桶名
bucket-name: 存储桶名
# 存储桶下的路径
path: /files
# 归类,支持按年(year)、按月(month)、按天(day)
classify: day
# 七牛云配置
qiniu:
# 访问七牛云的域名,不配置无法实现下载功能
domain: http://xxx.com
# accessKey
access-key: 七牛云平台的AccessKey
# secretKey
secret-key: 七牛云平台的SecretKey
# 存储桶名
bucket-name: 存储桶名
# 存储桶下的路径
path: /files
# 归类,支持按年(year)、按月(month)、按天(day)
classify: day
~~~
### 引入IStorageService类
~~~
@Resource
private IStorageService storageService;
~~~
### IStorageService类API说明
~~~
/**
* 文件上传
*
* @param multipartFile
* @return
*/
UploadResponse upload(MultipartFile multipartFile);
/**
* 文件上传
*
* @param multipartFile
* @param md5
* @return
*/
UploadResponse upload(MultipartFile multipartFile, String md5);
/**
* 文件上传
*
* @param file
* @return
*/
UploadResponse upload(File file);
/**
* 文件上传
*
* @param file
* @param md5
* @return
*/
UploadResponse upload(File file, String md5);
/**
* 文件上传
*
* @param inputStream
* @param originalFilename
* @param md5
* @param fileSize
* @return
* @throws Exception
*/
UploadResponse upload(InputStream inputStream, String originalFilename, String md5, long fileSize) throws Exception;
/**
* 判断文件是否允许上传
*
* @param originalFilename
* @return
*/
boolean allowedToUpload(String originalFilename);
/**
* 判断文件大小是否超过最大限制
*
* @param fileSize
* @return
*/
boolean exceedMaxSize(long fileSize);
/**
* 文件下载
*
* @param outputStream
* @param objectName
*/
void download(OutputStream outputStream, String objectName);
/**
* 删除已上传文件
*
* @param objectName
*/
void delete(String objectName);
~~~
### UploadResponse上传结果类
~~~
/**
* 文件MD5值
*/
private String md5;
/**
* 存储平台
*/
private String platform;
/**
* 原始文件名称
*/
private String fileName;
/**
* 文件大小
*/
private long fileSize;
/**
* 上传文件路径
*/
private String fileUrl;
/**
* 上传路径
*/
private String path;
/**
* 上传时间
*/
private Date uploadTime;
~~~
## 注意事项
### 选择minio做为存储平台需要额外引入相关依赖
~~~
io.minio
minio
8.4.3
com.squareup.okhttp3
okhttp
4.9.2
~~~
### 选择fastdfs做为存储平台需要额外引入相关依赖
~~~
com.github.tobato
fastdfs-client
1.27.2
~~~
### 选择阿里云OSS做为存储平台需要额外引入相关依赖
~~~
com.aliyun.oss
aliyun-sdk-oss
3.15.1
~~~
### 选择七牛云OSS做为存储平台需要额外引入相关依赖
~~~
com.qiniu
qiniu-java-sdk
7.7.0
com.squareup.okhttp3
okhttp
4.9.2
~~~