基于阿里云OSS的文件管理
最初,项目采用了阿里云OSS来管理文件的上传、下载功能,具体方案如下:
1.创建阿里云OSS的存储bucket,并开启读权限。
2.在Vue.js前端中创建OSS的工具包
1 |
|
3.在前端需要上传文件的位置,调用工具包上传文件,并将生成的文件url使用axio传递到后端。
1 | async fnUploadRequest(option) { |
经过上面的处理,所有的文件在后端都仅仅以url字符串的方式存储,而文件则从前端直接使用js发送到了OSS服务器。这样的处理减轻了本地服务器网络带宽的压力,并且由于阿里云OSS是相当成熟的服务,所以用其存储文件是相当可靠的。
本博客站点也使用了阿里云OSS来进行文件管理,我对其的介绍链接如下:
https://aaronwu.fun/cn/aliyun-oss/
不过,考虑到本方法需要付费维持,并且相当于将文件的管理任务托付给了第三方,这并不能锻炼到我的能力,所以还是决定尝试在本地自己来管理文件,由此引入了MinIO。
MinIO简介
MinIO 是一款基于Go语言的高性能对象存储服务,它采用了Apache License v2.0开源协议,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。
下载MinIO在Windows下的安装包,下载地址:https://dl.min.io/server/minio/release/windows-amd64/minio.exe
下载完成后创建MinIO的数据存储目录,并使用如下启动命令MinIO服务;
1 | minio.exe server D:\developer\env\minio\data --console-address ":9001" |
MinIO服务运行成功后就可访问MinIO Console的管理界面了,输入账号密码minioadmin:minioadmin
即可登录,访问地址:http://localhost:9001
MinIO的应用
下面是一张标准的使用MinIO作为存储的文件上传流程示意图。
1.在pom.xml
中添加MinIO Java SDK的相关依赖:
1 | <!--MinIO Java SDK依赖--> |
2.修改application.yml
配置文件,在SpringBoot中开启文件上传功能,并添加MinIO客户端配置。
1 | spring: |
3.在Controller层控制文件的上传
1 |
|
4.配置跨域请求
1 |
|
总结
相比较而言,在本地实现的MinIO需要将文件完整地从前端传递到后端,再进行存储,实际上增加了服务器的压力,并且增加了对其进行维护的工作量。但是,仅仅学会使用第三方的接口是不够的,终究要将数据存储在自己的上,而不是让第三方进行托管。