首页 > 其他分享 >七牛云存储

七牛云存储

时间:2023-05-09 17:25:15浏览次数:52  
标签:存储 七牛云 String qiniu return file import com

导入jar包

     <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>${qiniu.version}</version>
        </dependency>
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>happy-dns-java</artifactId>
            <version>0.1.6</version>
        </dependency>

具体代码

package com.ruoyi.admin.utils.qinniu;

import com.alibaba.fastjson2.JSONObject;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.uuid.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.qiniu.common.Zone;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;


import java.io.IOException;
import java.util.Objects;

/**
 * @author Shenjh
 * @version 1.0.0
 * @title QiniuService
 * @description <TODO description class purpose>
 * @date 2023/3/21 10:26
 */
@Component
public class QiniuService {
    private static final Logger logger = LoggerFactory.getLogger(QiniuService.class);

    // 设置好账号的ACCESS_KEY和SECRET_KEY
    @Value("${qiniu.access}")
    public String ACCESS_KEY = "LYk-xYVu7p_z74PoPKoipLQxjw2J8y_YIAHwddOH";
    @Value("${qiniu.secret}")
    public String SECRET_KEY= "E8wFX-E6HOttFUI8DnMA4_G8aPPfCPBPoxPGAXhk";
    // 要上传的空间
    String bucketname = "sjhwarehouse";

    // 密钥配置
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

    // 构造一个带指定Zone对象的配置类,不同的七云牛存储区域调用不同的zone
    Configuration cfg = new Configuration(Zone.zone2());
    // ...其他参数参考类注释
    UploadManager uploadManager = new UploadManager(cfg);

    // 测试域名,只有30天有效期
    @Value("${qiniu.domain}")
    private static String QINIU_IMAGE_DOMAIN = "http://ru691gvt7.hn-bkt.clouddn.com/";

    // 简单上传,使用默认策略,只需要设置上传的空间名就可以了
    public String getUpToken() {
        return auth.uploadToken(bucketname);
    }

    public String saveImage(MultipartFile file) throws IOException {
        try {
            int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
            String name = FileUploadUtils.extractFilename(file);
            if (fileNamelength < 0) {
                return null;
            }
            // 调用put方法上传
            Response res = uploadManager.put(file.getBytes(), name, getUpToken());
            // 打印返回的信息
            if (res.isOK() && res.isJson()) {
                // 返回这张存储照片的地址
                return QINIU_IMAGE_DOMAIN + JSONObject.parseObject(res.bodyString()).get("key");
            } else {
                logger.error("七牛异常:" + res.bodyString());
                return null;
            }
        } catch (QiniuException e) {
            // 请求失败时打印的异常的信息
            logger.error("七牛异常:" + e.getMessage());
            return null;
        }
    }
}

业务代码

/**
     * 自定义图片上传
     */
    @PostMapping("/upload")
    public AjaxResult avatar(@RequestParam("file") MultipartFile file) throws Exception {
        if (!file.isEmpty()) {
            try {
                String fileUrl=qiniuService.saveImage(file);
                AjaxResult ajax = AjaxResult.success();
                ajax.put("imgUrl", fileUrl);
                return ajax;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return AjaxResult.error("上传图片异常,请联系管理员");
    }

 

标签:存储,七牛云,String,qiniu,return,file,import,com
From: https://www.cnblogs.com/SjhCode/p/Kodo.html

相关文章

  • Spring Boot项目对接腾讯云COS对象存储上传文件接口
    SpringBoot项目对接腾讯云COS对象存储上传文件接口pom.xml<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.35</version></dependency>application.ymlcos:secretId:xxx......
  • 顺序存储二叉树
    顺序存储二叉树1.介绍从数据存储来看,数组的存储方式和树的存储方式是可以互相转换的,即数组可以转换成树,树也可以转换成数组;遍历数组arr时,仍然可以以前序遍历、中序遍历、后序遍历的方式得到二叉树。2.顺序存储二叉树的特点顺序存储二叉树通常只考虑完全二叉树;下标为......
  • 列存储和行存储区别
    什么是列存储?列式存储(column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表:Ø Row-basedstoragestoresatableinasequenceofrows.Ø Column-basedstoragestoresatableinasequenceofcolumns.从上图......
  • 【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP
    问题描述查看JavaStorageSDK,想找一个 uploadWithResponse 的示例代码,但是通过全网搜索,结果没有任何有帮助的代码。使用最近ChatGPT来寻求答案,得到非常有格式的内容:问:javaazurestorageaccounttouseuploadWithResponse答:TousetheuploadWithResponsemethodw......
  • 存储引擎
    存储引擎一MySQL组织架构1、连接层1.验证用户的身份,用户名密码是否匹配2.提供两种连接方式(TCP/IP连接、socket连接)3.连接层提供了一个与sql层交互的线程2、SQL层1.接收连接层传过来的SQL语句2.验证执行的SQL语法3.验证SQL的语义(DDL,DML,DQL,DCL)4.解析器:解析SQL语句,生......
  • 怎么在VMware ESXi添加NAS存储?
    案例:需要将NAS添加到VMwareESXi“我的本地空间不是很多,虚拟机占了我很多空间,但是我有一个NAS,所以我想问一下有没有办法可以让VMwareESXi添加NAS存储来扩展空间?”网络附加存储(NAS)设备作为连接到网络并通过网络访问的数据存储设备非常方便。与上述情况类似,我们在某些情况下可能......
  • 存储过程
    存储过程介绍存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用,类似于函数或者说......
  • 对象存储 OSS(阿里云)
    教程安装SDK//Endpoint以杭州为例,其它Region请按实际情况填写。Stringendpoint="http://oss-cn-hangzhou.aliyuncs.com";//云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录https://ram.console.aliyun.c......
  • 存储双活同步导致数据库异常恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:存储双活同步导致数据库异常恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]客户双活存储异常之后,单个存储运行,故障存储修复之后,双活同步,出现多套系统异常,上一篇:Controlf......
  • ICT实战系统集成-LAB6-openEuler管理文件系统及存储
    LAB6-openEuler管理文件系统及存储1实验要求1.1添加两块scsi硬盘,大小分别为10G1.2对新添加的硬盘1(如:/dev/sdb)进行MBR分区、格式化、挂载1、使用fdisk对/dev/sdb进行分区:/dev/sdb1为主分区1大小2G、/dev/sb2为扩展分区大小8G,在/dev/sb2的基础上建立扩展分区/dev/sdb5,大小......