springboot整合七牛云对象存储

2023-10-29

目录

一、测试

二、整合


一、测试

注册七牛云账号,并进行邮箱绑定和实名认证。

七牛云每个月送10G完全够我们开发

创建一个空间

存储区域哪里离你近选哪里,访问控制一定要公开。

创建完成后,后期上传的静态资源,可以根据域名+文件名直接访问,自定义域名必须是备案域名

默认送一个测试域名,在上图位置

找到秘钥管理

AK,SK是我们访问要用到的

 在文档中找到开发者中心

复制依赖并导入

在测试类编写新方法

//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释

UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;

Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);

try {
    Response response = uploadManager.put(localFilePath, key, upToken);
    //解析上传成功的结果
    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    System.out.println(putRet.key);
    System.out.println(putRet.hash);
} catch (QiniuException ex) {
    Response r = ex.response;
    System.err.println(r.toString());
    try {
        System.err.println(r.bodyString());
    } catch (QiniuException ex2) {
        //ignore
    }
}

 填入AK,SK,和你的空间名即可运行测试

如果遇到如下报错

{ResponseInfo:com.qiniu.http.Response@ba4f370,status:400, reqId:XhcAAACBZ4c1k18X, xlog:X-Log, xvia:, adress:upload.qiniup.com/xxx.xxx.xxx.xxx:xxx, duration:0.449000 s, error:incorrect region, please use up-z2.qiniup.com, bucket is: xxx}

这是因为区域不一样,更改配置信息

        Configuration cfg = new Configuration(Zone.zone2());

 Zone.zoneX()看please use up-zX是多少。

运行成功后可以看到存储区域多出了文件

打开外链可以访问(域名+文件名)

二、整合

导入依赖

    <!--七牛云上传-->
    <dependency>
      <groupId>com.qiniu</groupId>
      <artifactId>qiniu-java-sdk</artifactId>
      <version>7.2.11</version>
    </dependency>
 
    <!-- 七牛云依赖Gson -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.6</version>
    </dependency>

配置yml

oss:
  qiniu:
    domain: qtxxxxxxxx.hn-xxx.xxxxx.com # 访问域名(默认使用七牛云测试域名)
    accessKey: Gn0uwxxxxxxxxxxxxxxxxxxxxy3GEVmZqR58ed # 公钥 刚才的AK
    secretKey: hs-ScVOxxxxxxxxxxxo0yG33uHm8_NkmnKy # 私钥 刚才的SK
    bucketName: officxxxxxxxxxxicture  #存储空间名称

编写配置类

package com.qingyun.gulimall.product.config;

import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;


@Data
@Component
public class QiNiuYunConfig {
    /**
     * 七牛域名domain
     */
    @Value("${oss.qiniu.domain}")
    private String qiniuDomain;
    /**
     * 七牛ACCESS_KEY
     */
    @Value("${oss.qiniu.accessKey}")
    private String qiniuAccessKey;
    /**
     * 七牛SECRET_KEY
     */
    @Value("${oss.qiniu.secretKey}")
    private String qiniuSecretKey;
    /**
     * 七牛空间名
     */
    @Value("${oss.qiniu.bucketName}")
    private String qiniuBucketName;
}

后续继续编写Service,实现类,Controller即可正常使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot整合七牛云对象存储 的相关文章

  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • 清理码头 - 删除“不必要”的东西

    我习惯用Jetty http jetty codehaus org jetty 作为我的网络容器 我对我做了什么安装步骤得到原始的焦油球并且清理一些目录和文件从中 我在这里想提出的是 您通常从 Jetty 中删除什么以在生产 登台环境中使用
  • Java Try Catch Final 没有 Catch 的情况下会阻塞

    我正在审查一些新代码 该程序只有一个 try 和一个 finally 块 既然排除了 catch 块 那么如果 try 块遇到异常或任何可抛出的内容 它如何工作 它直接进入finally块吗 如果 try 块中的任何代码可以引发已检查异常
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • WPF嵌入外部exe应用程序-去除子窗体边框样式

    WPF嵌入外部exe应用程序 去除子窗体边框样式 去除子窗体边框样式 导入winodows API 使用API去除边框 报错 解决 实现效果 完整实现代码 接着上一篇WPF嵌入外部exe应用程序 实现基本的嵌入 解决子窗体边框样式问题 去掉
  • python 的logging日志模块配合配置文件使用

    selenium python python 的logging日志模块配合配置文件使用 python 的logging日志模块配合配置文件使用 通过selenium python过程中经常需要记录程序运行过程中的异常和操作记录 程序问题 定
  • C++代码复习(三+)——SeqList顺序表内数据的数组方式实现

    include
  • 排序二叉树转变为有序双向链表

    要点 1 直接改变树的结构 2 排序二叉树在中序遍历的时候是有序的 3 双向链表 需要前后两个指针 可以将Tree的节点作为链表节点 代码实现 中序的递归实现 void ToList Tree pTree Tree pHead Tree p
  • 图形识别工具-百度AI接口实现

    简介 借出百度AI平台后看到有一个图像识别工具 就简单实现了下 效果挺好的 使用也简单 百度提供了两种实现方式 1 api方式调用 2 sdk方式调用 此方式简单 本文就以此为主讲一下 a 先下载图像识别sdk 地址 https cloud
  • 【毕业设计】 微信小程序购物商城系统 【含代码】

    文章目录 0 前言 1 开发工具 2 总体架构 3 项目规划 4 云数据库 5 项目解构 5 1 购买首页 5 2 商品详情页 5 3 搜索页 5 4 品牌分类页 5 5 筛选排序页 6 最后 0 前言 Hi 同学们好呀 学长今天带大家做一
  • 06-限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景?【Java面试题总结】

    限流策略有哪些 滑动窗口算法和令牌桶区别 使用场景 常见的限流算法有固定窗口 滑动窗口 漏桶 令牌桶等 6 1 固定窗口 概念 固定窗口 又称计算器限流 对一段固定时间窗口内的请求进行一个计数 如果请求数量超过阈值 就会舍弃这个请求 如果没
  • 【EI会议】2022年第三届纳米材料与纳米技术国际会议(NanoMT 2022)

    2022年第三届纳米材料与纳米技术国际会议 NanoMT 2022 重要信息 会议网址 www nanomt org 会议时间 2022年9月23 25日 召开地点 中国南京 截稿时间 2022年8月21日 录用通知 投稿后2周内 收录检索
  • QT鼠标控制

    文章目录 鼠标状态改变 限制鼠标活动区域 鼠标状态改变 void QApplication setOverrideCursor const QCursor cursor bool replace FALSE 设置应用程序强制光标为 curs
  • 晨读-为什么有时控制不了我的情绪?

    情绪是天生的 而且每一种情绪都有它的功能 例如恐惧让我们远离危险 焦虑让我们提升行动力 等等 但是我们还是会出现的情况是 明明我都理解 那些道理我都懂 为什么我还是忍不住难受 这些冒出来的情绪还是不受控制 在控制情绪之前 我们先要了解 我们
  • [避坑指南]GD32F130系列TIMER14

    前言 本人在使用GD32F130F8P6时 使能PA3引脚输出PWM波 但是检查代码没有问题 就是不出PWM波 折磨了3天 最后发现是该款单片机没有TIMER14定时器 手册误导用户啊 代码部分 此代码驱动TIMER14是没有问题的 voi
  • 9道常见的java笔试选择题

    1 关于Java编译 下面哪一个正确 选择一项 A Java程序经编译后产生machine code B Java程序经编译后会生产byte code C Java程序经编译后会产生DLL D 以上都不正确 答案 B 分析 Java是解释型
  • 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇

    北京大学肖臻老师 区块链技术与应用 公开课笔记 以太坊概述篇 对应肖老师视频 click here 全系列笔记请见 click here About Me 点击进入我的Personal Page BTC和ETH为最主要的两种加密货币 BTC
  • 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(16)

    今天我们解决了一个困扰了我们很久的问题 isqr值的获取与使用 功能的设想 通过isqr这个值来确定该耗材是否使用二维码管理 在新增耗材种类的时候加入该属性 选择是或否 并写入数据库 在显示库存数据的时候通过耗材的id查找该值 以此决定是否
  • 解决:Cannot deserialize value of type `java.util.Date` from String “xxx“: not a valid representation..

    一 问题 在做数据更新操作的时候 后台数据为Date时 前端把String类型数据传到后台时 Date类型无法识别这个String数据 所以会报错 二 错误描述 主要问题 Caused by com fasterxml jackson da
  • linux重启命令

    shutdown重启系统 usr sbin shutdown r now usr sbin 指定了命令的位置 路径 shutdown 是命令本身 r 是指示重新启动系统的选项 now 表示立即执行命令 不进行倒计时 也可以指定一个时间延迟
  • el-input校验,只能输入正整数

    一 表单校验方式 fileSort required true message 请输入排序 trigger blur pattern 1 9 d message 请输入正整数 trigger blur 二 el input的type设置为n
  • mybatis笔记(老杜版本)

    一 MyBatis概述 1 1框架 Java常 框架 SSM三 框架 Spring SpringMVC MyBatis SpringBoot SpringCloud 等 SSM三 框架的学习顺序 MyBatis Spring SpringM
  • mysql jdbc url utf8_Mysql JDBC Url参数与异常问题

    今天在写Java项目使用了 SELECT FROM plan WHERE isDelete isDelete AND nestId in open close separator gt nestId 但是很不幸 后台报异常 java sql
  • springboot整合七牛云对象存储

    目录 一 测试 二 整合 一 测试 注册七牛云账号 并进行邮箱绑定和实名认证 七牛云每个月送10G完全够我们开发 创建一个空间 存储区域哪里离你近选哪里 访问控制一定要公开 创建完成后 后期上传的静态资源 可以根据域名 文件名直接访问 自定