Cómo utilizar Qiniu Cloud (las imágenes explican en detalle)

1. ¿Por qué utilizar el OSS (servicio de almacenamiento de objetos) de Qiniu Cloud?
Insertar descripción de la imagen aquí

2. Uso de la nube Qiniu:

  1. Inicie sesión en el sitio web oficial de Qiniu Cloud, regístrese y autentíquese (la primera autenticación tiene 30 días de uso gratuito)
  2. Crea un nuevo espacio de almacenamiento

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Haga clic en el nombre del espacio creado para ingresar al espacio como se resume a continuación:
Insertar descripción de la imagen aquí

  1. Lea el documento de ayuda y use Qiniu Cloud Object Storage Service OSS en su aplicación web
    ( el avatar se almacena en Qiniu Cloud Object Storage Service)
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
    3.1. Mire principalmente el SDK de Java (SDK es una serie de paquetes jar, a los que se puede llamar directamente cuando se usa) La API en el paquete jar es suficiente)
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
    3.2. SDK (una serie de paquetes jar) se introduce como método maven, y la dependencia del paquete SDK-jar se introduce en su propio proyecto web. 3.3. Método de carga de archivos
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí: Transferencia directa del servidor
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
    3.4. Copiar el código de carga del flujo de datos
    Insertar descripción de la imagen aquí3.5. Usar una clase de prueba para probar la función de carga.
    Copie el código copiado en la clase de prueba e importe el paquete correspondiente (use el código de otras personas e importe el paquete Qiniu Cloud de otras personas)
    Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
3.6 Cargue una imagen local llamada 111.jpg a Qiniu Cloud

AK, SK y bucket deben mantenerse confidenciales y no pueden escribirse directamente en la clase OSSTest. Por seguridad, lea sus valores
Insertar descripción de la imagen aquí3.7 y OSSTest en el resumen del archivo de configuración (principalmente modifique 6 lugares + lea el archivo de configuración 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  异常类型 改大一点
        }

    }
}

aplicación.xml

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

3.8. Ejecute la clase de prueba y la imagen se cargará correctamente.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Debido a que el código no establece el valor clave,
Insertar descripción de la imagen aquí
establezca el valor clave a continuación.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí3.9. Quiero crear un directorio 2022 y colocar 111.png en el directorio.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_45432276/article/details/131682581
Recomendado
Clasificación