资讯专栏INFORMATION COLUMN

ApiBoot - ApiBoot Alibaba Oss 使用文档

fengxiuping / 708人阅读

摘要:添加快速集成的对象存储服务,提供常用的文件操作方法,当然也提供自定义扩展,以致于满足绝大数业务场景,并且通过扩展可以实现上传文件进度条下载文件进度条存储空间操作静态网站托管访问日志防盗链分片上传追加上传断点续传等等。

ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大的提高开发效率。

ApiBoot添加快速集成Aliyun的对象存储服务Oss,提供常用的文件操作方法,当然也提供自定义扩展,以致于满足绝大数业务场景,并且通过扩展可以实现上传文件进度条、下载文件进度条、存储空间操作、静态网站托管、访问日志、防盗链、分片上传、追加上传、断点续传等等。

引入ApiBoot Alibaba Oss

pom.xml配置文件内添加依赖,如下所示:



    org.minbox.framework
    api-boot-starter-alibaba-oss

ApiBoot所提供的依赖都不需要添加版本号,具体查看ApiBoot版本依赖

配置参数列表
配置参数 参数介绍 默认值 是否必填
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类就可以完成默认方法的使用,如下所示:

@Autowired
private ApiBootOssService apiBootOssService;
流上传
/**
  * 流方式上传
  */
@Test
public void uploadBytes() {
  ApiBootObjectStorageResponse response = apiBootOssService.upload("admin.txt", "admin".getBytes());
  logger.info("文件名称:{}", response.getObjectName());
  logger.info("文件访问路径:{}", response.getObjectUrl());
}
本地文件上传
/**
* 本地文件上传
*/
@Test
public void uploadFile() {
    ApiBootObjectStorageResponse response = apiBootOssService.upload("logo.png", "/Users/yuqiyu/Downloads/logo.png");
    logger.info("文件名称:{}", response.getObjectName());
    logger.info("文件访问路径:{}", response.getObjectUrl());
}
文件流上传
/**
* 文件流方式上传
*
* @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());
}
通过文件的输入流完成对象存储文件的上传
下载文件
/**
  * 下载文件
  */
@Test
public void download() {
  apiBootOssOverrideService.download("测试.png", "/Users/yuqiyu/Downloads/测试.png");
}
在上面的示例中,文件会自动下载到/Users/yuqiyu/Downloads/目录下,文件名称为测试.png
删除文件
/**
* 删除文件示例
*/
@Test
public void delete() {
    apiBootOssOverrideService.delete("测试.png");
}
删除对象存储空间内的文件时只需要传递文件名即可。
MultipartFile 上传文件

如果你是通过SpringMvc提供的MultipartFile对象进行上传文件,可以通过如下示例进行上传:

MultipartFile multipartFile = ..;
// 流方式上传
ApiBootObjectStorageResponse responseByte = apiBootOssService.upload("测试.png", multipartFile.getBytes());
// 文件输入流方式上传
ApiBootObjectStorageResponse responseIs = apiBootOssService.upload("测试.png", multipartFile.getInputStream());
自定义扩展

ApiBoot Alibaba Oss提供的方法毕竟是有限的,因此ApiBoot提供了自定义的扩展方式,让使用者可以根据Oss官方文档进行扩展,包含上传文件进度条、下载文件进度条、存储空间操作、静态网站托管、访问日志、防盗链、分片上传、追加上传、断点续传等等。

自定义扩展首先需要创建类并继承ApiBootOssService,如下所示:

//...
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注解进行标注,需要通过如下方式:

//...
@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://www.ucloud.cn/yun/74056.html

相关文章

  • ApiBoot - ApiBoot Alibaba Sms 使用文档

    摘要:的短信服务模块是由阿里云的国际短信服务提供的,支持国内和国际快速发送验证码短信通知和推广短信。前提需要到阿里云控制台申请开通短信服务。如果在阿里云控制台定义的短信模板存在多个参数,可以通过方法来进行挨个添加,该方法返回值为本对象。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接...

    cheng10 评论0 收藏0
  • ApiBoot 2.0.4.RELEASE版本发布

    摘要:是一款基于的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。通过在我的SpringBoot系列教程中得到的...

    JellyBool 评论0 收藏0
  • ApiBoot - ApiBoot Resource Load 使用文档

    摘要:注意如果你的方法返回对象只有一个资源对象需要映射,可以单独配置使用注解。集合资源加载返回值为集合的示例类型作为返回值时,其中注意必须是对象类型。如果你有想要的使用方式,你就可以提交 ApiBoot Resource Load ApiBoot Resource Load是一款资源与业务完全分离的基础框架,可以整合微服务(Feign、OpenFeign)进行负载均衡读取固定类型、固定所属业...

    diabloneo 评论0 收藏0
  • ApiBoot - ApiBoot Swagger 使用文档

    摘要:相关配置配置参数参数介绍默认值是否启用文档标题快速集成文档文档描述通过自动化配置快速集成文档,仅需一个注解一个依赖即可。注意通过所获取的类型都为。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大...

    yuanxin 评论0 收藏0
  • ApiBoot - ApiBoot Security Oauth 依赖使用文档

    摘要:如果全部使用默认值的情况话不需要做任何配置方式前提项目需要添加数据源依赖。获取通过获取启用在使用格式化时非常简单的,配置如下所示开启转换转换时所需加密,默认为恒宇少年于起宇默认不启用,签名建议进行更换。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即...

    Tonny 评论0 收藏0

发表评论

0条评论

fengxiuping

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<