文件上传第三方存储平台:七牛云对象存储(Java为例)

news2025/1/18 3:28:13

目录

一、注册账号并创建密钥

二、创建存储空间bucket

三、手动添加文件到存储空间

四、代码中执行上传操作


我发现很多人还不知道对于第三方存储如何在代码中进行使用,而实际开发中很多场景下可能都会遇到。

所以我特别写一篇博客,目的一是方便自己使用,二是给还在学习中的朋友一点参考。

如果对你有帮助还请不吝点赞👍加收藏💕。

一、注册账号并创建密钥

如何使用,其实官网已经很详细了。这里带着大家一起熟悉一下,个人认为最主要的是熟悉!

官网地址:七牛云 | 一站式场景化智能音视频 APaaS

首先需要注册、登录账号

然后点击头像进入:个人中心 -> 密钥管理,

如果没有密钥创建一个密钥

下图可以看到我们创建的密钥。AK/SK即对应的AccessKeySecretKey

 

二、创建存储空间bucket

从官网产品中找到对象存储Kodo,可能未来网站会更新布局,一般情况下找不到就搜索就是了。

然后按照下图添加一个存储空间。目的是用来存放我们未来要上传的文件。 

确定之后会提示如下信息,它会自动为我们创建的这个存储空间提供一个域名(有效期30天)。我们可以选择绑定自己的域名,这里暂时就用它提供的就好了。

然后就会看到生成的这个空间了。

到这里,我们就有了一个属于自己的存储空间啦!

三、手动添加文件到存储空间

点击进入当前创建的存储空间,然后选择文件管理,上传一个本地图片文件试试。

当然了,我们也可以选择拖动上传,以及创建文件夹来管理不同的资源。这里就不演示了。

然后点击详情,我们就可以看到文件的网络地址url。

我们试试访问这个地址,就可以看到刚刚上传的图片了。

四、代码中执行上传操作

好了,以上我们成功拥有了属于自己的对象存储空间了。

接下来,就是在代码里面实现上传操作了。

官网提供了各主流开发语言的SDK,我们可以根据官网提供的SDK,来完成功能操作。

如何在官网查询,我截了图如下:

 

💻下面,我给出我的代码示例,供各位参考:

@RestController
@RequestMapping("upload")
public class UploadController {
    @Autowired
    private QiniuUtils qiniuUtils;

    @PostMapping
    public Result upload(@RequestParam("image") MultipartFile file){
        String fileName = UUID.randomUUID().toString() + "." + StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
        boolean upload = qiniuUtils.upload(file, fileName);
        if (upload){
            return Result.success(QiniuUtils.url + fileName);
        }
        return Result.fail(20001,"上传失败");
    }
}
# 上传文件总的最大值
spring.servlet.multipart.max-request-size=20MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=2MB
@Component
public class QiniuUtils {

    public static  final String url = "https://go.sbps123.com/";

    @Value("${qiniu.accessKey}")
    private  String accessKey;
    @Value("${qiniu.accessSecretKey}")
    private  String accessSecretKey;

    public  boolean upload(MultipartFile file,String fileName){

        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huabei());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        String bucket = "test-home-1";
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        try {
            byte[] uploadBytes = file.getBytes();
            Auth auth = Auth.create(accessKey, accessSecretKey);
            String upToken = auth.uploadToken(bucket);
                Response response = uploadManager.put(uploadBytes, fileName, upToken);
                //解析上传成功的结果
                DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
                return true;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        return false;
    }
}

创作不易,感谢各位的支持与肯定!💕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea自动导入包,自动删除包

当我们复制代码时,需要一个个导入包,删除代码时,没有用到的包就没用了,忘记删了就导致代码臃肿了,设置自动导入自动删除包使我们的代码更加简洁。 1、file–>settings 2、找到Auto Import 3、勾选Add unambiguous …

JavaScript实现在线Excel的附件上传与下载

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求&am…

FOSSASIA Summit 2023 - 开源亚洲行

作者 Ted 致歉:本来这篇博客早就该发出,但是由于前几个月频繁差旅导致精神不佳,再加上后续我又参加了 Linux 基金会 7/27 在瑞士日内瓦举办的 Open Source Congress,以及 7/29-30 台北的 COSCUP23,干脆三篇连发&#x…

HICP实验--MPLS VPN

前置学习 HCIP学习--MPLS_板栗妖怪的博客-CSDN博客 一、实验拓扑 二、实验要求 1、R1与R5MPLS VPN 2、R6与R7MPLS VPN 3、 R7可以访问R2/3/4的环回 三、实验步骤 首先配置IP R1 [r1-GigabitEthernet0/0/0]ip address 192.128.2.1 24 [r1-GigabitEthernet0/0/0]int l 0 [r1-…

从“智能涌现”到“价值涌现”,讯飞星火又一次“登月”

狂飙200多天后,国产大模型的数量已超过百家,正式迈入“百模大战”阶段。 越往后走,普通用户和产业各界对大模型的期待,也从“你家的大模型涌现了吗?”的能力突破,快进到了“大模型究竟能帮我干什么”的“价…

Android 性能优化–Gradle 编译速度优化

Android 性能优化–Gradle 编译速度优化 1. 保持工具最新2. 使用 KSP 代替 kapt3. 避免编译不必要的资源4. 优化 repositories maven 排序5. 在调试构建中使用静态构建配置值6. 使用静态依赖版本7. 创建库模块8. 为自定义构建逻辑创建任务9. 将图像转换为 WebP10. 禁用 PNG 处…

SpringBoot3集成ElasticSearch

标签:ElasticSearch8.Kibana8; 一、简介 Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,适用于各种数据类型,数字、文本、地理位置、结构化数据、非结构化数据; 在实际的工作中,历经过Ela…

github中Keyless Google Maps API在网页中显示地图和标记 无需api key

使用Google Maps API在网页中显示地图和标记的示例博客。以下是一个简单的示例: C:\pythoncode\blog\google-map-markers-gh-pages\google-map-markers-gh-pages\index.html 介绍: 在本篇博客中,我们将学习如何使用Google Maps API在网页中…

MySQL— 基础语法大全及操作演示!!!(上)

MySQL—— 基础语法大全及操作演示(上) 一、MySQL概述1.1 、数据库相关概念1.1.1 MySQL启动和停止 1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.3.1 DDL — 数据库操作2.3.1 DDL — 表操作 2.4、DML2.4.1 DML—…

“记账”很麻烦,看这场竞赛中的队伍与合合信息是如何解决问题的

在我们日常生活中或多或少都会有记账的情况,以此来对自己的收支和消费习惯进行分析,来帮助自己减少不必要的开支,优化财务决策、合理分配资金,减少财务压力和不必要的浪费。 但记账这个动作本身就是一件比较麻烦的。虽然现阶段有…

【C语言】练习题专栏(9)

前言 今天是五道基础的选择题,包含一些简单的小知识,希望对大能有帮助。 1. 题干 答案 A\C\D 知识点 本题考察的知识点有两个:宏定义和typedef重定义。 宏仅仅是将INT_PTR替换成int * int *a,b其中,a的类型是int *而b为In…

如雷贯耳的话,不战而屈人之兵

如雷贯耳的话:不战而屈人之兵 【安志强趣讲《孙子兵法》第10讲】 【原文】 第三篇篇名:谋攻篇 【趣讲大白话】 胜负计算确定,物资钱粮准备好了,就开始制定战争谋略了。 【原文】 孙子曰:夫用兵之法,全国为上…

【Linux操作系统】举例解释Linux系统编程中文件io常用的函数

在Linux系统编程中,文件IO操作是非常常见和重要的操作之一。通过文件IO操作,我们可以打开、读取、写入和关闭文件,对文件进行定位、复制、删除和重命名等操作。本篇博客将介绍一些常用的文件IO操作函数。 文章目录 1. open()1.1 原型、参数及…

C语言实例_奇偶校验算法

一、奇偶校验算法 奇偶校验算法(Parity Check Algorithm)是一种简单的错误检测方法,用于验证数据传输中是否发生了位错误。通过在数据中添加一个附加的奇偶位(即校验位),来实现错误的检测和纠正。 在奇偶…

BGP知识点整理

BGP相关知识点 定义 又名:边界网关路由协议 属于无类别路径矢量协议 EGP—外部网关路由协议-包含BGP IGP内部网关路由协议-包含RIP OSPF EIGRP IGP协议追求:1、无环(选路佳) 2、收敛快 3、占用资源少 EGP协议的追求: 1…

照耀国产的星火,再度上新!

国产之光,星火闪耀 ⭐ 新时代的星火⭐ 多模态能力⭐ 图像生成与虚拟人视频生成⭐ 音频生成与OCR笔记收藏⭐ 助手模式更新⭐ 插件能力⭐ 代码能力⭐ 写在最后 ⭐ 新时代的星火 在这个快速变革的时代,人工智能正迅猛地催生着前所未有的革命。从医疗到金融…

当众讲话培训的需求分析

标题:当众讲话培训的需求分析 摘要:当众讲话是现代社会中一项重要的技能,对于个人和职业发展都具有重要意义。然而,许多人面临着当众讲话的困难和挑战。本论文旨在分析当众讲话培训的需求,探讨为什么人们需要这种培训…

【Java基础】Java对象的生命周期

【Java基础】Java对象的生命周期 一、概述 一个类通过编译器将一个Java文件编译为Class字节码文件,然后通过JVM中的解释器编译成不同操作系统的机器码。虽然操作系统不同,但是基于解释器的虚拟机是相同的。java类的生命周期就是指一个class文件加载到类…

C#__使用委托升级冒泡排序

// 员工类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Delegate委托 {class Employee // 员工类{public string Name { get; set; }public double Salary { get; set; }public Employee…

二叉树的存储结构(链式存储)—— 数据结构与算法

😶‍🌫️Take your time ! 😶‍🌫️ 💥个人主页:🔥🔥🔥大魔王🔥🔥🔥 💥代码仓库:🔥🔥魔…