Java获取七牛云存储空间中图片外链

 更新时间:2023年10月31日 15:11:36   作者:I'm Jie  
本文主要介绍了Java获取七牛云存储空间中图片外链,需要获取在七牛云中存储的所有图片,并返回外链地址,具有一定的参考价值,感兴趣的可以了解一下

七牛云官方文档:https://developer.qiniu.com/kodo/sdk/java

如果有还不会使用SpringBoot整合七牛云存储的小伙伴们,可以跳转查看这篇文章:SpringBoot 整合七牛云上传图片

在最近的一个项目中,需要获取在七牛云中存储的所有图片,并返回外链地址,具体代码实现如下。

获取七牛云密钥

  • 进入七牛云控制台

    image-20220131212145277

  • 点击【头像】→【密钥管理】

    image-20220131212100619

  • 创建密钥,复制保存,下面要用

    image-20220131212314100

导入依赖

  • 从 7.2.24 开始,okhttp3 升级到 3.14.2,其要求 java 1.8 及以上。
  • 若一定 java 1.7 ,请手动指定 okhttp3 依赖 3.12,要求 3.12.3 及以上, com.squareup.okhttp3:okhttp:3.12.3
<!-- https://mvnrepository.com/artifact/com.qiniu/qiniu-java-sdk -->
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>7.11.0</version>
</dependency>

编辑 YAML 配置文件

在配置文件中添加七牛云的一些参数:

#七牛云参数
qiniu:
  accessKey: IrgJ4tvtYwWMr # AK
  accessSecretKey: J-0wUai568ul7L # SK
  bucket: yunpicos # 空间
  prefix: word/ # 文件名路径前缀,用于过滤,默认为空
  domain: http://img.roman.top/ # 域名

添加七牛云配置类

封装七牛云需要的配置参数:

@Getter
@Configuration
public class QiNiuConfig {

    //七牛云 ak
    @Value("${qiniu.accessKey}")
    private String accessKey;

    //七牛云sk
    @Value("${qiniu.accessSecretKey}")
    private String secretKey;

    //指定七牛云空间
    @Value("${qiniu.bucket}")
    private String bucket;

    //文件名路径前缀
    @Value("${qiniu.prefix:}")
    private String prefix;

    //指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
    @Value("${qiniu.delimiter:}")
    private String delimiter;

    //七牛云空间的域名
    @Value("${qiniu.domain:}")
    private String domain;

}

编写 QiNiuImgUrls 方法

返回所有图片外链的集合,外链格式为【域名+文件路径】:

public List<String> imgUrls(){
  //参数
  String accessKey = qiNiuConfig.getAccessKey();
  String secretKey = qiNiuConfig.getSecretKey();
  String bucket = qiNiuConfig.getBucket();
  String prefix = qiNiuConfig.getPrefix();
  String delimiter = qiNiuConfig.getDelimiter();
  String domain = qiNiuConfig.getDomain();

  //构造一个带指定 Region 对象的配置类
  Configuration cfg = new Configuration(Region.region0());

  Auth auth = Auth.create(accessKey, secretKey);

  BucketManager bucketManager = new BucketManager(auth, cfg);

  //每次迭代的长度限制,最大1000,推荐值 1000
  int limit = 1000;

  //列举空间文件列表
  BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
  while (fileListIterator.hasNext()) {
    //处理获取的file list结果
    FileInfo[] items = fileListIterator.next();
    //stream流过滤掉掉多余的元素,并将其余元素的所有文件路径和域名进行拼接,返回所有图片外链的集合
    List<String> collect = Arrays.stream(items).filter(f -> !f.key.equals(prefix)).map(f -> domain+f.key).collect(Collectors.toList());
    return collect;
  }
  return null;
}

测试结果

返回对应空间下的所有图片的外链:

image-20230609152419286

到此这篇关于Java获取七牛云存储空间中图片外链的文章就介绍到这了,更多相关Java获取七牛云图片外链内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java 实现音乐播放器的简单实例

    java 实现音乐播放器的简单实例

    这篇文章主要介绍了java 实现音乐播放器的简单实例的相关资料,希望通过本文能帮助到大家,实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    这篇文章主要介绍了详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Java雪花算法生成分布式id详解

    Java雪花算法生成分布式id详解

    这篇文章主要介绍了Java雪花算法生成分布式id详解,随着业务的增长,有些表可能要占用很大的物理存储空间,为了解决该问题,后期使用数据库分片技术,将一个数据库进行拆分,通过数据库中间件连接,需要的朋友可以参考下
    2024-01-01
  • SpringAOP四种通知类型+环绕通知说明

    SpringAOP四种通知类型+环绕通知说明

    这篇文章主要介绍了SpringAOP四种通知类型+环绕通知说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Mybatis源码解析之事务管理

    Mybatis源码解析之事务管理

    大家好,本篇文章主要讲的是Mybatis源码解析之事务管理,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Java校验validate介绍和使用实例

    Java校验validate介绍和使用实例

    这篇文章主要介绍了Java校验validate介绍和使用的相关资料,还介绍了如何使用@Valid和@Validated注解进行声明式校验,以及如何处理复杂校验需求,通过自定义校验注解来实现,需要的朋友可以参考下
    2025-01-01
  • Java线程通信中关于生产者与消费者案例分析

    Java线程通信中关于生产者与消费者案例分析

    这篇文章主要介绍了Java线程通信中关于生产者与消费者案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 浅析Java的Hibernate框架中的缓存和延迟加载机制

    浅析Java的Hibernate框架中的缓存和延迟加载机制

    这篇文章主要介绍了Java的Hibernate框架中的缓存和延迟加载机制,Hibernate是注明的Java下SSH三大web开发框架之一,需要的朋友可以参考下
    2015-11-11
  • Java常用正则表达式(身份证号、邮箱、手机号)格式校验代码示例

    Java常用正则表达式(身份证号、邮箱、手机号)格式校验代码示例

    这篇文章主要介绍了Java常用正则表达式格式校验的相关资料,讲解了使用正则表达式校验身份证号、邮箱和手机号,并允许输入为空字符串,给出了详细的代码示例,需要的朋友可以参考下
    2025-04-04
  • Java模版引擎Freemarker

    Java模版引擎Freemarker

    FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
    2016-04-04

最新评论