ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

七牛云对象存储

2020-12-21 09:59:10  阅读:251  来源: 互联网

标签:存储 七牛云 String 对象 上传 Region qiniu import com


七牛云对象存储

在实际开发中,遇到文件上传、下载这是无可避免的,但是文件上传到本地,就占用本地资源,这样就会影响性能,所有可以把文件上传到指定服务器,这里就可以使用七牛云对象存储,把图片视频存储到七牛云,需要使用就使用外链地址直接可以访问

开始

这两处需要记录一下,在后面开发需要使用
在这里插入图片描述

参考官方文件进行开发文件上传

https://developer.qiniu.com/kodo/sdk/1239/java#1

安装

使用Maven,jar包版本去7.4.0~7.4.99之间的,比如:7.4.0取不到就区7.4.1依次往后

<dependency>
  <groupId>com.qiniu</groupId>
  <artifactId>qiniu-java-sdk</artifactId>
  <version>[7.4.0, 7.4.99]</version>
</dependency>

鉴权

键查密钥管理是否有,参考第一张图片
在这里插入图片描述

文件上传

在第一张图片中指定了密钥、地区,在实现文件上传的时候就需要指定地区了,地区分为华东、华北、华南、北美、东南亚

机房Region
华东Region.region0(), Region.huadong()
华北Region.region1(), Region.huabei()
华南Region.region2(), Region.huanan()
北美Region.regionNa0(), Region.beimei()
东南亚Region.regionAs0(), Region.xinjiapo()
  • 若不指定 RegionRegion.autoRegion() ,则会使用 自动判断 区域,使用相应域名处理。

编写文件上传工具类

application.properties

qiniuyun.accessKey=
qiniuyun.secretKey=
#设置对象存储名称
qiniuyun.bucket=storage-images-sunweijie
#图片外链地址前缀,用于显示图片
qiniuyun.OuterChain=http://qll7sx8y9.hn-bkt.clouddn.com/

工具类:

package com.swj.util;

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 org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.InputStream;
import java.util.UUID;

/**
 * 文件上传工具类
 */
@Component
@org.springframework.context.annotation.Configuration
public class UploadFileUtil {
    @Value("${qiniuyun.accessKey}")
    private String accessKey;
    @Value("${qiniuyun.secretKey}")
    private String secretKey;
    @Value("${qiniuyun.bucket}")
    private String bucket;
    @Value("${qiniuyun.OuterChain}")
    private String OuterChain;

    /**
     * 上传文件并且返回文件地址
     *
     * @param inputStream 文件
     */
    public void setUploadManager(InputStream inputStream) {
        //设置密钥、文件连接、文件名等等属性
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huanan());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //设置连接地址
        Auth auth = Auth.create(accessKey, secretKey);
        String prefix = "";
        int Guid = 100;
        try {
            String s = auth.uploadToken(bucket);
            //生成文件名
            String s1 = UUID.randomUUID().toString();
            //实现文件上传
            Response response = uploadManager.put(inputStream, s1, s, null, null);
            //解析上传成功结果
            DefaultPutRet defaultPutRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            System.out.println("文件外链地址:" + OuterChain + defaultPutRet.key);
            System.out.println("defaultPutRet.hash = " + defaultPutRet.hash);
        } catch (QiniuException e) {
            System.out.println("e.getMessage() = " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Controller

package com.swj.controller;

import com.swj.util.UpdateFileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@Controller
public class uploadController {
    @Autowired
    private UploadFileUtil upload;

    //跳转到index
    @GetMapping("/")
    public String getIndex() {
        return "index";
    }

    @PostMapping("/upload")
    public void upload(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) {

        //获取文件名
        String originalFilename = file.getOriginalFilename();
        String endName = originalFilename.split("\\.")[1];
        String name = endName.toLowerCase();
        //判断是否是指定类
        List<String> fileType = Arrays.asList("gif", "jpg", "jfif", "ico", "png", "bmp", "svg");
        if (!fileType.contains(name)) {
            System.out.println("文件类型错误");
        }
        //文件名
        try {
            upload.setUploadManager(file.getInputStream());
            System.out.println(" 文件上传成功 ");
        } catch (IOException e) {
            System.out.println(" 文件上传失败 ");
            e.printStackTrace();
        }
    }
}

html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="">
    <input type="submit" value="添加">
</form>
<img src="http://qll7sx8y9.hn-bkt.clouddn.com/0b17dfce-5840-4f5c-8d52-627d8e12eb45"
     style="width: 500px;height: 400px;"
     alt="">
</body>
</html>

总结:这些在官方文档中都是有写的,我们可以根据一下代码自己编写一个工具类:https://developer.qiniu.com/kodo/sdk/1239/java#upload-file

//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
//...其他参数参考类注释

UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;

Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);

try {
    Response response = uploadManager.put(localFilePath, key, upToken);
    //解析上传成功的结果
    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    System.out.println(putRet.key);
    System.out.println(putRet.hash);
} catch (QiniuException ex) {
    Response r = ex.response;
    System.err.println(r.toString());
    try {
        System.err.println(r.bodyString());
    } catch (QiniuException ex2) {
        //ignore
    }
}

标签:存储,七牛云,String,对象,上传,Region,qiniu,import,com
来源: https://blog.csdn.net/qq_41498751/article/details/111467645

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有