Springboot使用七牛云对象存储

这篇具有很好参考价值的文章主要介绍了Springboot使用七牛云对象存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Springboot使用七牛云对象存储,学习文章地址:

Spring Boot集成七牛云对象存储oss_springboot集成七牛云_dreaming9420的博客-CSDN博客

详细教程:

Spring Boot集成七牛云

官方sdk地址

4.1在pom.xml中添加maven依赖

com.qiniu

qiniu-java-sdk

7.7.0

编写yml配置文件

qiniu:

kodo:

# 配置accessKey

accessKey: accessKey

# 配置secretKey

secretKey: secretKey

# 配置空间名称

bucket: bucket

# 配置域名

domain: domain

QiniuKodoUtil工具类:

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.*;
import com.qiniu.storage.model.BatchStatus;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

@Component
public class QiniuKodoUtil {
    /**
     * 构造一个带指定 Region 对象的配置类,因为我的是华南机房,所以为Region.region2()
     */
    Configuration cfg = new Configuration(Region.region2());
    @Value("${qiniu.kodo.accessKey}")
    String accessKey;
    @Value("${qiniu.kodo.secretKey}")
    String secretKey;
    @Value("${qiniu.kodo.bucket}")
    String bucket;
    @Value("${qiniu.kodo.domain}")
    String domain;
    /**
     * 文件名前缀
     */
    String prefix = "";
    /**
     * 每次迭代的长度限制,最大1000,推荐值 1000
     */
    int limit = 1000;
    /**
     * 指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
     */
    String delimiter = "";

    /**
     * 列举空间文件列表
     */
    public void listSpaceFiles() {
        Auth auth = Auth.create(accessKey, secretKey);
        BucketManager bucketManager = new BucketManager(auth, cfg);
        BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
        while (fileListIterator.hasNext()) {
            //处理获取的file list结果
            FileInfo[] items = fileListIterator.next();
            for (FileInfo item : items) {
                System.out.println(item.key);
                System.out.println(item.fsize / 1024 + "kb");
                System.out.println(item.mimeType);
            }
        }
    }

    /**
     * 上传本地文件
     */
    public void upload(String localFilePath) {
        UploadManager uploadManager = new UploadManager(cfg);
        /**
         *  如果是Windows情况下,格式是 D:\\qiniu\\test.png
         * 以文件最低级目录名作为文件名
         */
        String[] strings = localFilePath.split("\\\\");
        String key = strings[strings.length - 1];
        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);
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
    }

    /**
     * 获取下载文件的链接
     *
     * @param fileName 文件名称
     * @return 下载文件的链接
     */
    public String getFileUrl(String fileName) throws UnsupportedEncodingException {
        String encodedFileName = URLEncoder.encode(fileName, "utf-8").replace("+", "%20");
        String finalUrl = String.format("%s/%s", "http://" + domain, encodedFileName);
        System.out.println(finalUrl);
        return finalUrl;
    }

    /**
     * 批量删除空间中的文件
     *
     * @param fileList 文件名称列表
     */
    public void deleteFile(String[] fileList) {
        Auth auth = Auth.create(accessKey, secretKey);
        BucketManager bucketManager = new BucketManager(auth, cfg);
        try {
            //单次批量请求的文件数量不得超过1000
            BucketManager.BatchOperations batchOperations = new BucketManager.BatchOperations();
            batchOperations.addDeleteOp(bucket, fileList);
            Response response = bucketManager.batch(batchOperations);
            BatchStatus[] batchStatusList = response.jsonToObject(BatchStatus[].class);
            for (int i = 0; i < fileList.length; i++) {
                BatchStatus status = batchStatusList[i];
                String key = fileList[i];
                System.out.print(key + "\t");
                if (status.code == 200) {
                    System.out.println("delete success");
                } else {
                    System.out.println(status.data.error);
                }
            }
        } catch (QiniuException ex) {
            System.err.println(ex.response.toString());
        }
    }
}

新建并编写QiniuKodoController数据接口类文章来源地址https://www.toymoban.com/news/detail-431275.html

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;

@RestController
@RequestMapping("qiniukodo")
public class QiniuKodoController {

    @Resource
    QiniuKodoUtil qiniuKodoUtil;


    @RequestMapping("upload")
    public void upload(String localFilePath) {
        qiniuKodoUtil.upload(localFilePath);
    }

    @RequestMapping("listSpaceFiles")
    public void listSpaceFiles() {
        qiniuKodoUtil.listSpaceFiles();
    }
    
    @RequestMapping("getFileUrl")
    public void getFileUrl(String fileName) {
        try {
            qiniuKodoUtil.getFileUrl(fileName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    @RequestMapping("deleteFile")
    public void deleteFile(String[] fileList) {
        qiniuKodoUtil.deleteFile(fileList);
    }
}

到了这里,关于Springboot使用七牛云对象存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot集成七牛云OSS详细介绍

    本文主要SpringBoot集成七牛云OSS详细介绍的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 1、OSS? 一,什么是OSS? 「OSS」的英文全称是Object Storage Service,翻译成中

    2024年02月04日
    浏览(35)
  • springboot+vue项目中如何利用七牛云实现头像的上传

    做了个前后端分离的项目,对于用户的头像修改一直不是很满意, 于是用了Vant4的组件库改成了文件点击上传,先是打算存到本地,了解到七牛云的方便后(主要是免费),决定改成七牛云存储图片,记录一下操作,方便查看复习 目录 一、七牛云 七牛云简介 七牛云使用 二

    2024年02月11日
    浏览(58)
  • 【自用笔记】小程序中使用七牛云上传图片

    因为我们之前使用的上传图片在上传比较大的图片时回显耗时很长,所以要求改用七牛云,根据领导给的参考和自己查的资料,做出来一个比较简单的可以满足需求。 首先需要进行准备工作: 内容参考这里(领导给的参考,因为部分准备工作已经做过了,所以我这里就直接

    2024年04月09日
    浏览(37)
  • SpringBoot集成阿里云OSS、华为云OBS、七牛云、又拍云等上传案例【附白嫖方案】【附源码】

    唉!本文写起来都是泪点。不是刻意写的本文,主要是对日常用到的文件上传做了一个汇总总结,同时希望可以给用到的小伙伴带来一点帮助吧。 上传本地,这个就不水了,基本做技术的都用到过吧; 阿里云OSS,阿里云是业界巨鳄了吧,用到的人肯定不少吧,不过博主好久

    2024年02月22日
    浏览(51)
  • 使用(七牛云)为例子实现将文件上传到云服务器

    目前,用户的头像、分享生成的长图等文件都是存放在本地的,我们可以将他们存放在云服务器中,此处我们使用七牛云作为例子示范。 创建账户并申请如下的两个bucket,分别是用户头像的存储空间和分享长图的存储空间。 相应的js文件: 文件已经存入七牛云

    2024年02月10日
    浏览(48)
  • flutter开发 - 七牛云上传sdk插件qiniu_flutter_sdk使用

    flutter七牛云上传sdk插件qiniu_flutter_sdk使用 最近在拆分代码,将上传组件设置成插件,下面记录下实现过程。 一、创建flutter_plugin上传插件 这里Android Studio使用创建plugin 填写一下信息 Project name Project location Description Project type Organization Android Language iOS Language Platforms 二、代码实

    2024年02月10日
    浏览(40)
  • uniapp 集成七牛云,上传图片

    4 相册选择照片,或者拍照后,使用上传代码

    2024年02月17日
    浏览(59)
  • 七牛云部署文件管理服务器

    1.1 介绍 在实际开发中,我们会有很多处理不同功能的服务器。例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的服务器 分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率。 常见的图片存

    2024年01月23日
    浏览(51)
  • Element ui Upload 上传图片到七牛云

    action里填写的是七牛云的服务器地址(根据自己申请的区域填,如下图,我这边用的是华北地区) 注意:开发环境可以用http但是上线时需改为https请求,不然请求失败,所以建议都用https 七牛的一张存储区域表 存储区域    区域代码    客户端上传地址    服务端上传地址

    2024年02月14日
    浏览(55)
  • 七牛云如何配置免费 https 阿里云SSL证书

    七牛云注册链接:https://s.qiniu.com/yaQ3am 我之前有个项目是走的 https,这个项目作了一些印刷品,二维码的内容就是 https 的,后来为了适配七牛云的图片服务,就改成了 http。导致再扫二维码的时候都会提示不安全。 以 https 地址进入网站,网站却服务在 http 的时候,证书不匹

    2024年02月07日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包