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

一、为什么要使用七牛云的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;}@Testpublic 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-DCnuSLSystem.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_9ZUc65kwtYzjZhB5DhtMczhS6822gsecretKey: mTF-oazwPEHvO5FnQXFoWPRXKWjSmvC_55Ysycxbbucket: pk-sg-blog

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19237.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java微服务金融项目智牛股-基础知识三(Restful、HATEOAS、GRPC、SEATA )

Restful定义 Restful是一种软件架构与设计风格, 并非一套标准, 只提供了一些原则与约定条件。REST提供了一组架构约束,当作为一个整体来应⽤用时,强调组件交互的可伸缩性。接⼝口的通⽤用性、组件的独⽴立部署、以及⽤用来减少交…

spring cloud 之 Hystrix

Hystrix概述 Hystrix是一个供分布式系统使用,提供延迟和容错功能,保证复杂的分布系统在面临不可避免的失败是时,仍具有弹性。 当服务器A调用服务器B时,如果服务器B宕机,则服务器A不去调用。当服务器B在时间范围内未响…

基于深度学习的高精度安全帽背心检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度安全帽背心检测识别系统可用于日常生活中或野外来检测与定位安全帽背心目标,利用深度学习算法可实现图片、视频、摄像头等方式的安全帽背心目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用…

你知道为什么不用XFP光模块了吗?

在光纤通信应用领域中,10G光模块凭借着较低的成本和功耗被广泛应用于学校、企业等应用场景中。XFP和SFP是10G光模块常见的两种封装类型,那为什么现在市场上XFP光模块应用比较少了呢?下面我们来简单分析一下原因。 一、XFP与SFP光模块的概述 …

按日,周,年统计,无的数据补充0

需求:按日-周-年统计。统计涉及到3张表数据。 写sql。先把3张表数据摘取出来,只需对3张表的时间做分组统计即可。 按日统计 select DAY(dateff) as time,IFNULL(count(id),0)as num from(select create_time as dateff,id as id from cz_taxi_orders…

【雕爷学编程】Arduino动手做(113)---5110液晶屏模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

三分钟了解 SpringBoot 的启动流程

一、前言 背景:最近有位开发同学说面试被问到Spring Boot 的启动流程,以及被问到Spring Boot 的嵌入式Web容器是什么时候加载的。如何加载的。是怎么无缝切换的。 这些问题,其实回答起来也是比较复杂的。我们今天就从 SpringApplication.ru…

【Java】面向对象基础 之 接口

1、接口 在抽象类中,抽象方法本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。 如果一个抽象类没有字段,所有方法全部都是抽象方法: …

Python第二天之容器学习

1.List 容器无非就增删改查 1.添加 name_list [aaa,bbb,ccc,ddd] name_list.append(b1) name_list.insert(1,xxx) print(name_list)append 是在后面追加 而insert是自己定义下表插入 name_list [aaa,bbb,ccc,ddd] name_list2 [qqq,222,111] name_list.extend(name_list…

Web APls-day05

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) Window对象 BOM BOM(Browser Object Model ) 是浏览器对象模型 window对象是一个全局对象,也可以说是…

运维面试题

这里写目录标题 TCP介绍一下UDP TCP介绍一下 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它在计算机网络中负责提供可靠的数据传输和流量控制。 TCP通过使用三次握手建立一个连接,确…

leaflet在天地图上添加poi兴趣点

前言 书接上节,在上一篇博客加载的天地图的基础上,加载poi兴趣点。 上节传送:使用leaflet在html中加载天地图且去掉左上角的缩放图标以及右下角的logo 一、加载poi的方法 leaflet通过 L.marker 方法用来加载poi,我们只需填入p…