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

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(使用前将#替换为@)

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

  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • 是什么决定了从 lambda 创建哪个函数式接口?

    请考虑这个例子 import java util function Consumer public class Example public static void main String args Example example new
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • Cassandra java驱动程序协议版本和连接限制不匹配

    我使用的java驱动程序版本 2 1 4卡桑德拉版本 dsc cassandra 2 1 10cql 的输出给出以下内容 cqlsh 5 0 1 Cassandra 2 1 10 CQL spec 3 2 1 Native protocol
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi

随机推荐

  • 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