七牛云的使用(图片超详讲解)

2023-11-18

一、为什么要使用七牛云的OSS(对象存储服务)?
在这里插入图片描述

二、七牛云使用:

  1. 登录七牛云官网,注册并认证 (初次认证有30天免费使用权限)
  2. 新建存储空间

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
点击创建的空间名字,进入 空间概括如下:
在这里插入图片描述

  1. 阅读帮助文档,在自己的web应用中 使用七牛云对象存储服务OSS
    头像 存至 七牛云对象存储服务中)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3.1、主要看 java SDK (SDK就是一系列的jar包,用的时候直接调用jar包中的api即可)
    在这里插入图片描述
    在这里插入图片描述
    3.2、SDK(一系列jar包) 引入方式 选择maven方式, 将SDK——jar包 依赖引入 自己的web项目中即可
    在这里插入图片描述
    在这里插入图片描述3.3、上传文件方式: 服务器直传
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3.4、复制 数据流上传代码
    在这里插入图片描述3.5、用一个测试类 测试上传功能
    将拷贝的代码复制到 测试类中,导入相应的包(用人家的代码,导入人家七牛云的包)
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3.6、上传本机一张名为111.jpg的图片到七牛云上

AK,SK,bucket要保密,不能直接在 OSSTest类中写。为了安全要从配置文件汇总读取到他们的值
在这里插入图片描述3.7、OSSTest(主要修改6个地方 + 读取application.xml配置文件)

package com.sangeng;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import lombok.Data;
import org.junit.jupiter.api.Test;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Component;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

@Component //注解将该类标记为Spring的组件
//测试类所在包名 test 和 启动类所在包名java 一致(都在同一包src下),不需要加配置。如果不一致要加配置(加属性)
//@SpringBootTest(classes = SanGengBlogApplication.class)//指定启动类的字节码
@SpringBootTest
//@ConfigurationProperties 的作用: 让JavaBean中属性值要和配置文件application.xml进行映射
@ConfigurationProperties(prefix = "oss") //从application.xml 配置文件中读取 内容
public class OSSTest {

//    读取的时候,要创建成员变量(变量名要和application.xml文件中的名字一致)
//    并且 成员变量必须创建setter方法,进行自动赋值  (自动读取配置文件赋值)
    private String accessKey;
    private String secretKey;
    private String bucket;

    public void setAccessKey(String accessKey) {
        this.accessKey = accessKey;
    }
    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }
    public void setBucket(String bucket) {
        this.bucket = bucket;
    }

    @Test
    public void testOss(){

//        注:用七牛云的oss,所以导包的时候 要导入七牛云的包。     用人家的代码,导人家的包 com.qiniu.storage

        //构造一个带指定 Region 对象的配置类
//修改1.Region指定数据存储区域,autoRegion()自动根据七牛云账号找到选的区域(我选的是 华北)
        Configuration cfg = new Configuration(Region.autoRegion());
        cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释

        UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传

   注:为了安全起见,AK,SK,bucket存储空间名,都是从application.xml 配置文件中读取到的
修改2.复制七牛云官网-个人中心-密钥管理-  AK和SK
//        String accessKey = "";
//        String secretKey = "";
修改3.创建存储空间的名字 pk-sg-blog
//        String bucket = "";

//默认不指定key的情况下,以文件内容的hash值作为文件名,  比如上传一张图片,名字问hash值生成的名字
//修改4.指定上传文件到oss时,文件的存储名
        String key = null;

        try {
//修改5 注释掉,默认上传 字符串,写我们自己的上传格式(上传图片)
//            byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
//            ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
//上传文件——图片格式(本机绝对路径)
            InputStream inputStream = new FileInputStream("C:\\Users\\yangguang\\Desktop\\111.jpg");

            Auth auth = Auth.create(accessKey, secretKey);//创建凭证
            String upToken = auth.uploadToken(bucket); //上传凭证

            try {
//修改6 put方法 第一个参数 要放上面 自己定义的 inputStream对象
                Response response = uploadManager.put(inputStream,key,upToken,null, null);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                System.out.println(putRet.key); //Fo2AVLRHugoNbek6XZ8Uy-DCnuSL
                System.out.println(putRet.hash); //Fo2AVLRHugoNbek6XZ8Uy-DCnuSL hash值就是上传后的图片名字
            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                }
            }
        } catch (Exception ex) {
            //ignore  异常类型 改大一点
        }

    }
}

application.xml

oss:
  accessKey: 7R0PVHVZqQ_9ZUc65kwtYzjZhB5DhtMczhS6822g
  secretKey: mTF-oazwPEHvO5FnQXFoWPRXKWjSmvC_55Ysycxb
  bucket: pk-sg-blog

3.8、运行测试类,图片上传成功
在这里插入图片描述
在这里插入图片描述
因为代码没有设置key值
在这里插入图片描述
下面设置key值
在这里插入图片描述
在这里插入图片描述3.9、想创建一个2022目录,目录下放111.png
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

七牛云的使用(图片超详讲解) 的相关文章

  • 如何在谷歌地图中使用latlng字符串数组绘制多边形

    在我的应用程序中 我有包含 imagview 的 recyclerview 并且该 imageview 通过使用我存储在 sqlite 中的坐标包含静态地图图像 当我单击该图像时 我将该字符串数组格式的坐标传递给其他地图活动 然后使用该字符
  • 为什么byteArray的长度是22而不是20?

    我们尝试从字符串转换为Byte 使用以下 Java 代码 String source 0123456789 byte byteArray source getBytes UTF 16 我们得到一个长度为 22 字节的字节数组 我们不确定这个
  • 使用Java获取CSS文件中图像的URL?

    我正在尝试使用 Java 获取远程 CSS 文件中图像 所有 MIME 类型 的 URL 我正在使用 jsoup 来获取 css 的 URL 经过无数个小时的观看CSS解析器 http cssparser sourceforge net 由
  • 如何让 HttpClient 返回状态码和响应正文?

    我试图让 Apache HttpClient 触发 HTTP 请求 然后显示 HTTP 响应代码 200 404 500 等 以及 HTTP 响应正文 文本字符串 重要的是要注意我正在使用v4 2 2因为大多数 HttpClient 示例都
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic
  • IntelliJ IDEA 解析 JSP 中的 Web 路径

    如何设置 IntelliJ 查找 JSP 中引用的文件的位置 如果我有
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • 在 JavaFX 中更改 ListView 字体大小

    我想知道如何更改 JavaFx 中的列表视图项目文本字体大小 每行文本的大小会有所不同 我尝试使用细胞因子属性 但我不知道如何使用它 有人可以帮我吗 类似的问题在这里 如何更改JavaFX中ListView的字体大小 https stack
  • 有界通配符相关的编译器错误

    我想知道这段代码有什么问题 Map 但我试图说得更具体 这个问题在这个旧的 Apache 线程 ht
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • java.lang.ClassCastException: [B 无法转换为 java.lang.String

    我编写了一个带有字段 LoginId 和密码的实体类 我使用 AES ENCRYPT 加密密码并将其存储在数据库中 我只想检索已解密的密码 所以 我使用 AES DECRYPT 使用本机查询是在 OPen JPA 2 0 中 我写的查询是
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • 如何在Java中通过反射调用代理(Spring AOP)上的方法?

    一个接口 public interface Manager Object read Long id 实现该接口的类 Transactional Public class ManagerImpl implements Manager Over
  • 通过 ssh 发送命令并读取输出结果

    我有代码通过 ssh 连接到远程服务器并向其发送 2 个或更多命令 例如 cd export home ops bin和 viewlinkload time 20131205 19 但我没有看到命令执行 也没有收到结果 我需要获取服务器返回
  • 使用 InputStream 通过 TCP 套接字接收多个图像

    每次我从相机捕获图像时 我试图将多个图像自动从我的 Android 手机一张一张地发送到服务器 PC 问题是read 函数仅在第一次时阻塞 因此 从技术上讲 只有一张图像被接收并完美显示 但在那之后当is read 回报 1 该功能不阻塞
  • Java“非法访问操作”方法将被弃用? [复制]

    这个问题在这里已经有答案了 JDK 9 JVM 发出非法访问操作警告后 如果您使用一些非法访问 例如setAccessible 我的问题 Is setAccessible 以后会被封吗 此功能的官方参考 如果将被弃用 在哪里 我在任何地方都
  • 文档过滤器在 Java 中不起作用?

    在超过 10 个字符的文本字段中 它必须显示错误 为此 我使用了文档过滤器 JTextField field JTextField txtFld AbstractDocument document AbstractDocument fiel
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 在java中打印阿拉伯字符串

    我试图在 java 中显示阿拉伯语文本 但它显示垃圾字符 示例 或有时在我打印时仅显示问号 我如何才能打印阿拉伯语 我听说它与unicode和UTF 8有关 这是我第一次使用语言 所以不知道 我正在使用 Eclipse Indigo IDE

随机推荐

  • VUE锚点跳转增加滑动效果

    首先我通过直接的锚点跳转是实现不了滑动效果 所以首先实现锚点的跳转效果 先给点击的地方 设置一个点击事件 a 跳转 a 然后是被跳转的地方添加 class industry
  • 只需6行代码教你使用Spire.Doc在Java中将 Word 转为 Tiff

    Spire Doc for Java 是一款专业的Java Word组件 开发人员使用它可以轻松地将Word文档创建 读取 编辑 转换和打印等功能集成到自己的Java应用程序中 本文介绍如何使用Spire Doc for Java将Word
  • linux:ubuntu命令行扩容

    参考 ubuntu 20 04 逻辑卷 ext4 文件系统扩容 mob604757006a49的技术博客 51CTO博客 总结 准备步骤 链接里没有说明 我参考了其他的帖子增加的一步 1 关闭虚拟机 右键虚拟机 选择 设置 2 在虚拟机设置
  • android 富文本框架_史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(二)

    本文为霍格沃兹测试学院学员学习笔记 进阶学习文末加群 本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中 所涉及到的方方面面的知识点精华内容 如下所示 希望对大家快速总结和复习有所帮助 Appium 自动化测试从基础到框架实
  • python网络安全论文题目_计算机科学与技术专业毕业论文参考题目.doc

    感谢你的欣赏 计算机科学与技术专业 毕业论文参考题目 一 论文参考题目 基于定位和在线绘图的签到考勤系统的设计与实现 基于 ASP NET 技术的校园网络自助报修系统的设计与实现 基于 HTML5 的互动抽取系统的设计与实现 基于 Web
  • React的State Hook用法详解

    一 State Hook是啥 State Hook 就是指 useState 这个特殊函数 让你不用编写class 就可以使用state特性 换言之就是让 函数组件 拥有 state 特性 对数据进行动态更新 二 class中的state
  • RHCE(chrony服务器)

    chrony服务器 chrony服务器是一个开源自由的网络时间协议NTP的客户端和服务器的软件 他能让计算机保持系统时钟和时钟服务器保持同步 让计算机保持精确的时间 chrony也可以作为服务端软件为其他计算机提供时间同步服务 chrony
  • 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

    例 输入为18时 输出为3 4 5 6 5 6 7 include
  • Tomcat 配置 闪退 catalina.bat start

    过年的时候配置好的Tomcat 今天一用竟然启动不了 我晕 java home catalina base catalina home 全部是原来的配置 没有修改过 为什么不能用了那 遇到的问题如下 1 启动Tomcat在cmd中输入 ca
  • SpringBoot整合Mybatis注解实战(一)-- 插入数据

    1 数据库数据表的创建 1 首先 在本地数据库中创建一个新数据库 再此命名为test mybatis 1 创建一个数据表user 创建脚本如下 user表创建脚本 CREATE TABLE user id int 11 unsigned N
  • unity期末大作业 搬运东西过河 益智游戏

    unity期末大作业 搬运东西过河 益智游戏 详细情况如下动态图 点我下载 https download csdn net download weixin 43474701 75859840
  • 从“星空”主题绘画系统出发寻求绘画的可能性

    引言 对于绘画的定义 众说纷纭 百度词条上的绘画是这样的 绘画 是指用笔 板刷 刀 墨 颜料等工具材料 在纸 纺织物 木板 墙壁等平面 二度空间 上塑造形象的艺术形式 2016年吕澎在 论绘画 中说 知识与感觉是评估绘画的两个基本出发点 而
  • Redis有哪些数据类型?

    它主要提供了5种数据类型 字符串 string 哈希 hash 列表 list 集合 set 有序集合 zset Redis还提供了Bitmap HyperLogLog Geo类型 但这些类型都是基于上述核心数据类型实现的 5 0版本中 R
  • elasticsearch部署过程中各种报错解析

    elasticsearch bootstrap StartupException java lang RuntimeException can not run elasticsearch as root ES不能能使用root用户直接运行
  • Python学习笔记--exe文件打包与UI界面设计

    exe文件打包与UI界面设计 前言 一 基于tkinter实现的UI设计 1 1 库的选择及思路 1 2 定位方法的选用 1 3 Frame控件 1 4 变量设置 1 5 批量设置 1 6 Text文本框 1 7 总体界面设计 1 8 功能
  • 【数据结构】树与二叉树

    文章目录 树型结构 什么是树型结构 树型结构的概念 树的表示形式 树的应用 二叉树 二叉树的概念 两种特殊的二叉树 二叉树的性质 二叉树性质练习 练习一 解析 练习二 解析 练习三 解析 练习四 解析 总结 树型结构 什么是树型结构 树是一
  • selenium和Firefox geckodriver的安装

    安装selenium 首先你安装了python并设置了环境变量 直接win r输入cmd 进入命令行 然后输入 pip install selenium i https pypi tuna tsinghua edu cn simple 安装
  • Tomcat默认日志路径修改

    Tomcat安装目录下Logs目录下默认会产生4种日志文件 catalina log host manager log localhost log manager log 系统出现异常的时候 有时候log文件会暴涨 这里偶是把日志文件移动到
  • npm run dev 报错:missing script:dev

    报错信息 报错原因 package json 里面没有 scripts dev xxx 这段了 解决方法
  • 七牛云的使用(图片超详讲解)

    一 为什么要使用七牛云的OSS 对象存储服务 二 七牛云使用 登录七牛云官网 注册并认证 初次认证有30天免费使用权限 新建存储空间 点击创建的空间名字 进入 空间概括如下 阅读帮助文档 在自己的web应用中 使用七牛云对象存储服务OSS