其他
国产开源新秀,存储文件只需一行代码!!!
每天给大家带来网站工具、开源社区项目、开源软件、安卓&IOS软件等黑科技!
如果你们有什么好的建议,也可以在后台留言。
创作不易,希望大家给一点鼓励,把公众号设置为"星标",给文章点下"赞"和"在看",谢谢大家!每日持续更新,望宝子们多多支持~
在我们开发过程当中,会使用到存文档、图片、视频、音频等,这些都会用到云存储。时下最火的云存储有阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO等等。这么多的云存储方案,如果每个都对接一遍,能把人搞死,那么有没有一种统一的方案,只需配置各平台参数,就可以实现对接这么多的云存储平台呢?
此外, 通过 WebDAV 连接到 Alist 后,可以使用百度网盘、天翼云盘、阿里云盘、迅雷网盘等常见存储服务。
🎨️ 快速体验
这里我们默认使用 SpringBoot 环境,毕竟是行业老大。具体步骤如下:
<dependency>
<groupId>org.dromara.x-file-storage</groupId>
<artifactId>x-file-storage-spring</artifactId>
<version>2.0.0</version>
</dependency>
2、引入对应的云平台依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.16.1</version>
</dependency>
dromara:
x-file-storage: #文件存储配置
default-platform: huawei-obs-1 #默认使用的存储平台
thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
#阿里云OSS配置,注意缩进要对齐
aliyun-oss:
- platform: aliyun-oss-1 # 存储平台标识
enable-storage: true # 启用存储
access-key: ??
secret-key: ??
end-point: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/
base-path: test/ # 基础路径
@EnableFileStorage
@SpringBootApplication
public class SpringFileStorageDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringFileStorageDemoApplication .class,args);
}
}
fileStorageService.of(file).upload()
一行代码完成上传!
@RestController
public class FileDetailController {
@Autowired
private FileStorageService fileStorageService;//注入实列
/**
* 上传文件
*/
@PostMapping("/upload")
public FileInfo upload(MultipartFile file) {
return fileStorageService.of(file).upload();
}
/**
* 上传文件,成功返回文件 url
*/
@PostMapping("/upload2")
public String upload2(MultipartFile file) {
FileInfo fileInfo = fileStorageService.of(file)
.setPath("upload/") //保存到相对路径下,为了方便管理,不需要可以不写
.setObjectId("0") //关联对象id,为了方便管理,不需要可以不写
.setObjectType("0") //关联对象类型,为了方便管理,不需要可以不写
.putAttr("role","admin") //保存一些属性,可以在切面、保存上传记录、自定义存储平台等地方获取使用,不需要可以不写
.upload(); //将文件上传到对应地方
return fileInfo == null ? "上传失败!" : fileInfo.getUrl();
}
/**
* 上传图片,成功返回文件信息
* 图片处理使用的是 https://github.com/coobird/thumbnailator
*/
@PostMapping("/upload-image")
public FileInfo uploadImage(MultipartFile file) {
return fileStorageService.of(file)
.image(img -> img.size(1000,1000)) //将图片大小调整到 1000*1000
.thumbnail(th -> th.size(200,200)) //再生成一张 200*200 的缩略图
.upload();
}
/**
* 上传文件到指定存储平台,成功返回文件信息
*/
@PostMapping("/upload-platform")
public FileInfo uploadPlatform(MultipartFile file) {
return fileStorageService.of(file)
.setPlatform("aliyun-oss-1") //使用指定的存储平台
.upload();
}
/**
* 直接读取 HttpServletRequest 中的文件进行上传,成功返回文件信息
* 使用这种方式有些注意事项,请查看文档 基础功能-上传 章节
*/
@PostMapping("/upload-request")
public FileInfo uploadPlatform(HttpServletRequest request) {
return fileStorageService.of(request).upload();
}
}
🔥 作者下一步的更新计划
接入存储平台:HDFS、FastDFS、杉岩 OBS、Samba、NFS 大文件手动分片上传(1.0.0 已支持大文件自动分片上传) 复制或移动文件 文件内容预加载 上传无需强制获取 Size 新增 Access 模块,尝试通过 HTTP、FTP、WebDAV 等协议对外提供接口,方便其它程序使用
最后贴上项目的源码地址:
GitHub开源地址:
https://github.com/dromara/x-file-storageGitee开源地址:
https://gitee.com/dromara/x-file-storage
官网:
往期推荐: