在项目中,我们有很多种文件上传场景,例如客户业务的文件上传是上传到FTP,阿里云服务器的业务是上传到minio等等,最近看到一个开源的项目,可以很方便的实现文件的上传。所以在此做两篇记录,本文记录的主要是使用filestorage实现minio文件的上传功能,项目框架是springboot。
下面直接演示:
一、创建一个maven项目,并且添加依赖
<dependency> <groupId>cn.xuyanwu</groupId> <artifactId>spring-file-storage</artifactId> <version>0.5.0</version> </dependency> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.4.3</version> <exclusions> <exclusion> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.0</version> </dependency>
二、编写application,添加注解:
@EnableFileStorage
三、添加controller
/** * 使用最传统的方式上传文件 */ @PostMapping(value = { "/upload" }) public Object upload(MultipartFile file) { FileInfo upload = fileStorageService.of(file).upload(); return upload; }
四、添加配置文件:
spring: file-storage: default-platform: minio-1 thumbnail-suffix: ".min.jpg" #缩略图后缀 minio: # MinIO,由于 MinIO SDK 支持 AWS S3,其它兼容 AWS S3 协议的存储平台也都可配置在这里 - platform: minio-1 # 存储平台标识 enable-storage: true # 启用存储 access-key: GS82GBGTIDTXAMWU320Z secret-key: hS5t6uHG0XCRbgS16TQmkehoNkQj+oJtQr3+irNI end-point: http://www.abc.com/ bucket-name: test1 domain: http://www.abc.com/test1 base-path: / #这里的路径是在bucket里面是否创建路径,如果不需要单独创建路径,则直接写/即可,如果需要路径则填写对应的路径并且以/结尾,例如 test/
五、运行下看下效果
六、查看下minio上的文件
文件被成功的上传到了minio上。最后访问下文件:
这里的访问没有任何问题。
备注:
1、从上面可以看出我们写的代码不超过10行就完成了一个完整的文件上传的项目。
2、上传到文件系统的文件被自动重命名了,这也是我们需要的。
3、上传成功后返给我们的元数据信息都很齐全。
4、在引入依赖的话,需要屏蔽掉minio的okhttp,因为版本冲突,会导致classnotdefException。
最后附上源码,登录后即可下载。
还没有评论,来说两句吧...