ApiBoot - ApiBoot Alibaba Oss 使用文档

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: `ApiBoot`添加快速集成`Aliyun`的对象存储服务`Oss`,提供常用的文件操作方法,当然也提供自定义扩展,以致于满足绝大数业务场景,并且通过扩展可以实现上传文件进度条、下载文件进度条、存储空间操作、静态网站托管、访问日志、防盗链、分片上传、追加上传、断点续传等等。
ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大的提高开发效率。 `ApiBoot`添加快速集成`Aliyun`的对象存储服务`Oss`,提供常用的文件操作方法,当然也提供自定义扩展,以致于满足绝大数业务场景,并且通过扩展可以实现上传文件进度条、下载文件进度条、存储空间操作、静态网站托管、访问日志、防盗链、分片上传、追加上传、断点续传等等。 ### 引入ApiBoot Alibaba Oss 在`pom.xml`配置文件内添加依赖,如下所示: ```xml org.minbox.frameworkapi-boot-starter-alibaba-oss ``` `ApiBoot`所提供的依赖都不需要添加版本号,具体查看[ApiBoot版本依赖](https://github.com/hengboy/api-boot/blob/master/README.md#%E6%B7%BB%E5%8A%A0%E7%89%88%E6%9C%AC%E4%BE%9D%E8%B5%96) ### 配置参数列表 | 配置参数 | 参数介绍 | 默认值 | 是否必填 | | -------------------------------- | ------------------------------------------------------------ | ------ | -------- | | `api.boot.oss.region` | oss所属地域 | 空 | 是 | | `api.boot.oss.bucket-name` | oss存储空间名称 | 空 | 是 | | `api.boot.oss.access-key-id` | 阿里云账户accessKeyId | 空 | 是 | | `api.boot.oss.access-key-secret` | 阿里云账户accessKeySecret | 空 | 是 | | `api.boot.oss.domain` | oss存储空间所绑定的自定义域名,如果不配置,上传文件成功后返回默认格式化的文件访问路径 | 空 | 否 | ### 上传文件 在使用`ApiBoot Oss`时,只需要注入`ApiBootOssService`类就可以完成默认方法的使用,如下所示: ```java @Autowired private ApiBootOssService apiBootOssService; ``` #### 流上传 ```java /** * 流方式上传 */ @Test public void uploadBytes() { ApiBootObjectStorageResponse response = apiBootOssService.upload("admin.txt", "admin".getBytes()); logger.info("文件名称:{}", response.getObjectName()); logger.info("文件访问路径:{}", response.getObjectUrl()); } ``` #### 本地文件上传 ```java /** * 本地文件上传 */ @Test public void uploadFile() { ApiBootObjectStorageResponse response = apiBootOssService.upload("logo.png", "/Users/yuqiyu/Downloads/logo.png"); logger.info("文件名称:{}", response.getObjectName()); logger.info("文件访问路径:{}", response.getObjectUrl()); } ``` #### 文件流上传 ```java /** * 文件流方式上传 * * @throws Exception */ @Test public void uploadInputStream() throws Exception { FileInputStream inputStream = new FileInputStream(new File("/Users/yuqiyu/Downloads/logo.png")); ApiBootObjectStorageResponse response = apiBootOssService.upload("测试.png", inputStream); logger.info("文件名称:{}", response.getObjectName()); logger.info("文件访问路径:{}", response.getObjectUrl()); } ``` > 通过文件的输入流完成对象存储文件的上传 #### 下载文件 ```java /** * 下载文件 */ @Test public void download() { apiBootOssOverrideService.download("测试.png", "/Users/yuqiyu/Downloads/测试.png"); } ``` > 在上面的示例中,文件会自动下载到`/Users/yuqiyu/Downloads/`目录下,文件名称为`测试.png`。 #### 删除文件 ```java /** * 删除文件示例 */ @Test public void delete() { apiBootOssOverrideService.delete("测试.png"); } ``` > 删除对象存储空间内的文件时只需要传递文件名即可。 #### MultipartFile 上传文件 如果你是通过`SpringMvc`提供的`MultipartFile`对象进行上传文件,可以通过如下示例进行上传: ```java MultipartFile multipartFile = ..; // 流方式上传 ApiBootObjectStorageResponse responseByte = apiBootOssService.upload("测试.png", multipartFile.getBytes()); // 文件输入流方式上传 ApiBootObjectStorageResponse responseIs = apiBootOssService.upload("测试.png", multipartFile.getInputStream()); ``` ### 自定义扩展 `ApiBoot Alibaba Oss`提供的方法毕竟是有限的,因此`ApiBoot`提供了自定义的扩展方式,让使用者可以根据`Oss`官方文档进行扩展,包含上传文件进度条、下载文件进度条、存储空间操作、静态网站托管、访问日志、防盗链、分片上传、追加上传、断点续传等等。 自定义扩展首先需要创建类并继承`ApiBootOssService`,如下所示: ```java //... public class ApiBootOssOverrideService extends ApiBootOssService { /** * logger instance */ static Logger logger = LoggerFactory.getLogger(ApiBootOssOverrideService.class); /** * 实现父类构造函数 * * @param endpoint 外网节点 * @param bucketName 存储空间名称 * @param accessKeyId 阿里云账号授权Id * @param accessKeySecret 阿里云账号授权Secret * @param domain 自定义域名 */ public ApiBootOssOverrideService(String endpoint, String bucketName, String accessKeyId, String accessKeySecret, String domain) { super(endpoint, bucketName, accessKeyId, accessKeySecret, domain); } /** * 创建bucket存储 * * @param bucketName 存储名称 */ public void createBucket(String bucketName) { OSSClient ossClient = getOssClient(); Bucket bucket = ossClient.createBucket(bucketName); logger.info("新创建存储空间名称:{}", bucket.getName()); logger.info("新创建存储空间所属人:{}", bucket.getOwner().getDisplayName()); closeOssClient(ossClient); } } ``` 如上`createBucket`方法所示`ApiBootOssService`内部提供了获取`OssClient`以及关闭`OssClient`连接的方法,可以直接调用。 **扩展生效** 我们自定义的扩展,需要将实例放入`SpringIOC`容器内,方便我们在使用处进行注入,要注意,由于构造函数参数的原因,无法直接通过`@Service`或者`@Component`注解进行标注,需要通过如下方式: ```java //... @Bean @ConditionalOnMissingBean ApiBootOssOverrideService apiBootOssOverrideService(ApiBootOssProperties apiBootOssProperties) { return new ApiBootOssOverrideService(apiBootOssProperties.getRegion().getEndpoint(), apiBootOssProperties.getBucketName(), apiBootOssProperties.getAccessKeyId(), apiBootOssProperties.getAccessKeySecret(), apiBootOssProperties.getDomain()); } ``` `ApiBootOssProperties`属性配置类,是`ApiBoot`内置的,可以在任意地方进行注入,这里目的只是为了拿到相关配置进行构造参数实例化使用。 本章源码地址:[https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-alibaba-oss](https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-alibaba-oss) ![ApiBoot 开源交流群](https://upload-images.jianshu.io/upload_images/4461954-be532cec551174d5.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
存储 安全 对象存储
OSS对接-STS认证模式接入参考文档
背景之前项目中用到文件上传的场景中,都是由服务端做转发到OSS,存在着性能损耗。我们在 高德文件直传能力建设 项目中需要探索使用客户端直连OSS的方式来做,了解到OSS提供了STS认证的方式,通过子账号生成的临时AK作为客户端短期访问OSS的凭证,也不同担心AK安全的问题。具体方案见官方文档:STS临时授权访问OSSOSS可以通过阿里云STS(Security Token Service)进行临时
2125 0
OSS对接-STS认证模式接入参考文档
|
2月前
|
存储 对象存储 C++
在 VS Code 中使用 OSS 进行 Markdown 文档编写
阿里云OSS对象存储服务是理想的存储解决方案,专门用于承载大量非结构化数据。在VSCode中编写Markdown文档时,手动上传图片至OSS并获取相应链接的过程通常复杂且耗时。为此,Aliyun OSS Uploader插件应运而生,以简化和优化此流程。它不仅能够自动将图片上传到OSS并生成可供插入的链接,还能在您需要时通过撤回链接,删除已上传的图片,极大地提升了效率和便捷性。
|
2月前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
|
2月前
|
分布式计算 DataWorks 搜索推荐
DataWorks操作报错合集之DataWorks我做简单的用户画像,根据文档的例子,连接 OSS 时遇到连接问题,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
9月前
|
Java 对象存储
【工具类】使用阿里oss实现图片、视频、文档上传
【工具类】使用阿里oss实现图片、视频、文档上传
335 0
|
11月前
|
存储 前端开发 JavaScript
|
存储 数据采集 运维
Alibaba Cloud Lens for OSS最佳实践
——其冀 阿里云智能产品专家
Alibaba Cloud Lens for OSS最佳实践
|
存储 数据处理 对象存储
OSS数据处理最佳实践--文档预览
阿里云存储开放的数据湖体系引入众多计算引擎。通过阿里云智能媒体管理产品,对象存储OSS面向视频处理应用,图像处理应用,文档处理应用开放了接入能力。这里帮助大家快速讲解如果实现OSS上offcie文档预览。
5176 0
|
对象存储
How to Automate Backups with Alibaba Cloud Object Storage Service
In this tutorial, we will explore how we can automatically upload backups to Alibaba Cloud OSS with Minio Client and cronjob.
5238 0
How to Automate Backups with Alibaba Cloud Object Storage Service
|
开发工具 对象存储
How to Apply Alibaba Cloud Object Storage Service Resources to Websites
This article discusses the various applications of OSS and addresses some of the most common issues when applying OSS to websites.
1768 0