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

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

二、七牛云使用:

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

七牛云的使用(图片超详讲解)_第1张图片

七牛云的使用(图片超详讲解)_第2张图片
七牛云的使用(图片超详讲解)_第3张图片
点击创建的空间名字,进入 空间概括如下:
七牛云的使用(图片超详讲解)_第4张图片

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

七牛云的使用(图片超详讲解)_第17张图片
七牛云的使用(图片超详讲解)_第18张图片
3.6、上传本机一张名为111.jpg的图片到七牛云上

AK,SK,bucket要保密,不能直接在 OSSTest类中写。为了安全要从配置文件汇总读取到他们的值
七牛云的使用(图片超详讲解)_第19张图片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、运行测试类,图片上传成功
七牛云的使用(图片超详讲解)_第20张图片
七牛云的使用(图片超详讲解)_第21张图片
因为代码没有设置key值
在这里插入图片描述
下面设置key值
七牛云的使用(图片超详讲解)_第22张图片
七牛云的使用(图片超详讲解)_第23张图片3.9、想创建一个2022目录,目录下放111.png
七牛云的使用(图片超详讲解)_第24张图片
七牛云的使用(图片超详讲解)_第25张图片
在这里插入图片描述

你可能感兴趣的:(云服务,java,intellij-idea)