# 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 ~~~