作为一个技术出身的我,深知技术人面临的挑战和痛点。在日常工作中,文件存储是一个看似简单但却复杂的问题。每个云存储提供商都有自己的SDK和API,而管理这些不同的服务往往需要花费开发者大量的时间和精力。今天,我想向大家介绍一个名为“x-file-storage”的开源项目,它是一个能大幅简化文件存储工作的工具。
支持以下的方式文件上传和OSS上传。
在这个数字化的时代,随着数据量的激增,文件存储成为了任何业务不可或缺的一环。不同的业务有不同的存储需求,比如需要本地存储以便快速访问,或者使用云服务提供商以提高可用性和可靠性。
什么是x-file-storage?
x-file-storage是一个高度灵活和可扩展的Java库,它能够让开发者通过一行代码将文件存储到几乎所有主流的存储平台。无论是本地、FTP、SFTP、WebDAV,还是ali云OSS、huawei云OBS、qiniu云Kodo,x-file-storage都可以轻松对接。
为什么选择x-file-storage?
-
简单易用:整合了多种存储服务,开发者只需学习一套API。 -
高度兼容:支持包括ali 云、腾讯云、华为云等在内的数十种云存储服务。 -
一致性体验:无论使用哪种云存储,API调用方式保持一致。开源免费:作为一个开源项目,它可以自由使用,也欢迎社区贡献。
如何使用x-file-storage?
使用x-file-storage非常简单,下面是一个如何将文件存储到阿里云OSS的示例代码:
1、引入项目的依赖
<dependency>
<groupId>org.dromara.x-file-storage</groupId>
<artifactId>x-file-storage-spring</artifactId>
<version>2.1.0</version>
</dependency>
2、再引入对应平台的依赖,用不到平台不用引入
3、再添加对应平台的配置,不使用的情况下可以不写
4、在启动类上加上@EnableFileStorage注解
@EnableFileStorage@SpringBootApplicationpublic class SpringFileStorageTestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringFileStorageTestApplication.class,args);
}
}
关键代码
关键文件上传和其他代码
支持 File、MultipartFile、byte[]、InputStream、URL、URI、String、HttpServletRequest,大文件会自动分片上传。
@RestControllerpublic 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();
}}
开发者的生产力加速器,拒绝重复造轮子,拥抱开源共享
这不仅仅是一个工具,这是一台生产力加速器。它让你从重复且繁杂的存储服务接口对接工作中解放出来,将宝贵的时间和精力投入到真正关键的业务逻辑开发上。想要升级服务?想要扩展业务到国外?x-file-storage让这一切变得触手可及。
走在前沿的你,怎能不试试?
现在,当你手握x-file-storage,就像握有文件存储问题的神奇。它不仅能帮你节省时间,让你专注于核心业务,更能在技术上给你足够的弹性去应对未来可能出现的各种复杂场景。
所以,如果你还在为各种存储服务的接入头疼,不妨来试试x-file-storage。它可能会成为你编程路上的得力助手,让你的开发之旅变得更加顺畅和愉快。
项目地址:https://gitee.com/dromara/x-file-storage
项目文档:https://x-file-storage.xuyanwu.cn/#/
参与其中,你我共同进步
x-file-storage的精髓不仅在于技术,更在于开源的精神。你可以通过文档掌握它的使用方法,通过实际项目应用它提升效率,甚至可以贡献你的代码和想法,帮助这个项目成长为更加完善的工具。
让我们共同携手,把握这个开源项目的无限可能,解锁新的编程技能,提高生产力,释放你的双手,去编写更加美好的代码世界!
原文始发于微信公众号(souvc):开源|一行代码实现文件存储到几乎所有主流的存储平台的工具
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/205826.html