Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【VIDEO_Parent】-创作者前端-腾讯云对象存储

【VIDEO_Parent】-创作者前端-腾讯云对象存储

原创
作者头像
程序员NEO
修改于 2023-11-30 15:42:40
修改于 2023-11-30 15:42:40
2731
举报

声明,之前用的某XX云,我推荐大家使用腾讯云COS: https://console.cloud.tencent.com/cos 本次使用的是腾讯云进行替换,所以大家看到文章如果有出现某XX云的,SDK等信息需要自行根据腾讯云文档进行替换即可

申请

开通之后的样子如下图:

点击管理控制台,进去之后, 点击立即开通,有个申请开通的按钮。

申请秘钥

Api 地址

地址:对象存储 快速入门-SDK 文档-文档中心-腾讯云 (tencent.com)

创建 service_upload 服务

修改 service_upload 服务的 pom.xml 引入依赖

代码语言:html
AI代码解释
复制
<dependencies>
    <!-- 阿里云oss依赖 -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>

    <!-- 日期工具类依赖 -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
</dependencies>

添加启动类并排除加载数据库相关信息

代码语言:java
AI代码解释
复制
/**
 * @author BNTang
 * @version 1.0
 * @project video_parent
 * @description OSS云上传服务
 * @since Created in 2021/4/3 12:17
 **/
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class UpLoadApplication {
    public static void main(String[] args) {
        /*
        exclude = DataSourceAutoConfiguration.class:默认会加载数据库相关信息,现在是上传服务,里面用不到数据库相关信息,不让工程加载数据库相关信息
        */
        SpringApplication.run(UpLoadApplication.class, args);
    }
}

resources 中添加配置文件 application.yml 内容如下

代码语言:yaml
AI代码解释
复制
# application-dev.yml
server:
  port: 8002

logging:
  pattern:
    console: "%clr(%5p) %clr(-){faint} %clr(%-80.80logger{79}){cyan} %clr(:) %m%n"

spring:
  application:
    name: service-video
  profiles:
    active: dev

# 定义oss相关属性
oss:
  endpoint: oss-cn-hangzhou.aliyuncs.com
  accessKeyId: LTAI4GH19ep2P8caxW2E2N6A
  accessKeySecret: NAmWiBmKXofw7hs4JRcx7SLhF1MN6P
  bucketName: BNTang

oss 相关属性怎么来的呢,继续进入到我们上方开通好的 oss 管理控制台中选择 Bucket 管理 如下图:

按照我如下图进行选择即可,读写不能设置为私有,不然就不能访问了,同城冗余存储代表的是,如果出现故障了,它可以做备份,之前的数据还有,其它的就没什么要注意的了创建即可

创建好了之后界面如下图所示,我下图选中了一个 Endpoint 就是我们上方 oss 相关属性的 Endpoint 配置值,其它的在哪里呢,继续往下看 accessKey 就是我们之前创建的那个 accessKey 的界面中的 accessKey,不知道找了可以参考下图:

如下的方式大家自行替换一下吧,最近没有时间更新到腾讯云,所以我给大家一个参考过程大概意思就是还需要拿到桶的 accessKey 来进行认证

可能你一来不是显示的,需要获取验证码输入之后就可以看到了,复制上方的一些信息替换成你自己实际的即可配置完毕了, bucketName 就是你创建的 bucketName 的名称

定义工具类加载配置信息

代码语言:java
AI代码解释
复制
/**
 * @author BNTang
 * @version 1.0
 * @project video_parent
 * @description 读取配置的属性信息
 * @since Created in 2021/4/3 12:46
 **/
@Component
public class OssConstant implements InitializingBean {
    @Value("${oss.endpoint}")
    private String endpoint;

    @Value("${oss.accessKeyId}")
    private String accessKeyId;

    @Value("${oss.accessKeySecret}")
    private String accessKeySecret;

    @Value("${oss.bucketName}")
    private String bucketName;

    public static String ENDPOINT;
    public static String ASSESS_KEY_ID;
    public static String ASSESS_KEY_SECRET;
    public static String BUCKET_NAME;

    /**
     * 在属性文件加载完毕后属性也设置完毕之后, 会自动调用
     */
    @Override
    public void afterPropertiesSet() {
        ENDPOINT = endpoint;
        ASSESS_KEY_ID = accessKeyId;
        ASSESS_KEY_SECRET = accessKeySecret;
        BUCKET_NAME = bucketName;
    }
}

定义上传的控制器接口

代码语言:java
AI代码解释
复制
/**
 * @author BNTang
 * @version 1.0
 * @project video_parent
 * @description 上传oss控制器
 * @since Created in 2021/4/3 12:53
 **/
@RestController
@RequestMapping("/service_upload/file")
@Api(tags = "上传OSS")
@CrossOrigin
public class UpLoadController {

    private final UpLoadService upLoadService;

    public UpLoadController(UpLoadService upLoadService) {
        this.upLoadService = upLoadService;
    }

    /**
     * <p>
     * 上传文件
     * </p>
     *
     * @param file 文件
     * @return 上传之后的文件下载地址 url
     */
    @PostMapping("/uploadOssFile")
    public ResponseResult uploadOssFile(MultipartFile file) {
        return ResponseResult.ok().data("url", upLoadService.uploadFile(file));
    }

}

定义上传的接口业务

代码语言:java
AI代码解释
复制
/**
 * @author BNTang
 * @version 1.0
 * @project video_parent
 * @description 上传服务接口
 * @since Created in 2021/4/3 12:56
 **/
public interface UpLoadService {

    /**
     * <p>
     * 上传OSS文件
     * </p>
     *
     * @param file 文件
     * @return 上传之后的url
     */
    String uploadFile(MultipartFile file);

}

OSS 上传业务实现

代码语言:java
AI代码解释
复制
/**
 * @author BNTang
 * @version 1.0
 * @project video_parent
 * @description OSS上传业务实现
 * @since Created in 2021/4/3 12:57
 **/
@Service
public class UpLoadServiceImpl implements UpLoadService {

    @Override
    public String uploadFile(MultipartFile file) {
        // Endpoint以上海为例,其它Region请按实际情况填写。
        String endpoint = OssConstant.ENDPOINT;

        // 云账号AccessKey有所有API访问权限
        String accessKeyId = OssConstant.ASSESS_KEY_ID;
        String accessKeySecret = OssConstant.ASSESS_KEY_SECRET;
        String bucketName = OssConstant.BUCKET_NAME;

        // 创建OSSClient实例。
        OSS ossClient = null;
        try {
            // 创建OSSClient实例。
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

            // 上传文件流。
            InputStream inputStream = file.getInputStream();

            // 处理文件名称
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            String fileName = uuid + file.getOriginalFilename();

            // 把同一天上传的文件 放到同一个文件夹当中  2020/10/1/fileName
            String date = new DateTime().toString("yyyy/MM/dd");
            fileName = date + "/" + fileName;

            ossClient.putObject(bucketName, fileName, inputStream);

            // https://bntang.oss-cn-shanghai.aliyuncs.com/01-%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%AF%AD%E8%A8%80%E6%A6%82%E8%BF%B01.png
            return "https://" + bucketName + "." + endpoint + "/" + fileName;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭OSSClient。
            if (null != ossClient) {
                ossClient.shutdown();
            }
        }
        return null;
    }
}

重启工程进行测试上传,访问 swagger 选择需要上传的文件进行上传,在进行访问 swagger 的时候发现,弹出了如下图的内容,如果出现了下图中的内容就代表没有添加扫描包的注解

修改 service_upload 的启动类添加如下注解即可

代码语言:java
AI代码解释
复制
@ComponentScan(basePackages = {"top.it6666"})

测试上传,成功,如下图

查看阿里云 OSS 存储文件列表如下图,发现已经OK了:

最后

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
如有疑问,该篇章可以参考:https://www.cnblogs.com/BNTang/articles/14613496.html
如有疑问,该篇章可以参考:https://www.cnblogs.com/BNTang/articles/14613496.html
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
对象存储OSS
概述 一、定期启动腾讯云服务备份数据(自己服务备份) FileController package com.qf.push.oss; import com.alibaba.fastjson.JSON
2021/01/20
38.7K1
基于OSS服务器的文件上传以及文件下载
Hello,今天想跟大家分享一下我近期做的项目中使用的文件上传与文件下载,其实在以前我们想要做文件上传可能要自己去搭建一个专门的服务器,然后将我们的文件上传到这个服务器上,下载就从我们这个服务器上去进行下载就行了。
一个程序员的成长
2020/11/25
7.8K0
基于OSS服务器的文件上传以及文件下载
Spring mvc+oss存储+fileupload多文件上传实现SSO单点登录模板管理
之前给大家介绍了sso的相关知识点和集成方案,考虑到每个系统所属行业的不同,这边针对于不同行业做了一些统一的sso单点登录界面模板,使用fileupload多文件上传+OSS阿里云存储方案。
用户7788846
2020/11/27
1.7K0
文件访问路径规则 BucketName.Endpoint/ObjectName
@ConditionalOnMissingBean//保证spring容器只有一个AliOssUtil对象
用户7737280
2024/08/24
1740
OSS简单文件上传工具类
导包 <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency> 工具类代码: 输入要上传的文件地址,返回上传后的地址 上传任意文件 import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilde
用户9006224
2022/12/21
10.3K0
MinIO对象存储
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
别团等shy哥发育
2023/03/30
7.6K0
MinIO对象存储
腾讯云对象存储
  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
别团等shy哥发育
2023/02/25
59.3K2
腾讯云对象存储
如何将本地数迁移至腾讯云之一工具篇 - COS Migration
COS Migration 是一个集成了 COS 数据迁移功能的一体化工具。通过简单的配置操作,用户可以将源地址数据快速迁移至 COS 中,它具有以下特点:
云存储
2019/11/28
2.3K0
如何将本地数迁移至腾讯云之一工具篇 - COS Migration
springboot整合minio
accessKey和secretKey需要根据启动的窗口上的值进行配置bucketName这个需要自己创建
java后端指南
2022/02/23
1.3K0
springboot整合minio
快速入门Web开发(下)
在 list() 方法中,通过调用 deptMapper.list() 来执行查询操作,并将查询结果作为方法的返回值。这里的 deptMapper.list() 就是调用 DeptMapper 接口的 list() 方法,从数据库中获取部门数据。
Qiuner
2024/07/19
1210
快速入门Web开发(下)
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。
别惹CC
2025/03/05
4620
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
通过S3协议实现通用的文件存储服务中间件
在日常开发文件上传相关服务时,通常都会选择腾讯云,阿里云,七牛云等提供的oss服务作为文件存储系统,如果需要自行搭建文件存储系统,通常则会采用minio等开源项目。
大忽悠爱学习
2022/09/28
5.8K0
通过S3协议实现通用的文件存储服务中间件
手把手教你SpringBoot轻松整合Minio实现文件上传下载
前面我们介绍了什么是分布式存储系统,介绍了什么是MinIO,最后如何使用MinIO构建分布式文件系统。那么怎么在实际的项目中使用MinIO呢?接下来就手把手教你如何在SpringBoot中轻松整合MinIO 。
章为忠学架构
2023/10/06
5.3K0
手把手教你SpringBoot轻松整合Minio实现文件上传下载
MinIO对象存储——Java SDK
对象存储——Minio 初探中我们介绍了单机部署MinIO的过程,以及在控制台上的一些操作。因为在实际应用中,主要还是通过sdk进行操作,所以这里我们也开始介绍MinIO SDK的使用。MinIO SDK的官网地址:https://min.io/docs/minio/linux/developers/minio-drivers.html?ref=docs。从中可以看出,MinIO发布了.NET、Golang、Haskell、Java、JavaScript、Python共6种语言的SDK,接下来我们基于Java SDK来实现对MinIO的一些常规操作。
程序员架构进阶
2023/12/25
2.4K0
MinIO对象存储——Java SDK
SpringBoot整合Minio对象存储服务
MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 MinIO与传统的存储和其他的对象存储不同的是:它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为MinIO一开始就只为对象存储而设计。所以他采用了更易用的方式进行设计,它能实现对象存储所需要的全部功能,在性能上也更加强劲,它不会为了更多的业务功能而妥协,失去MinIO的易用性、高效性。 这样的结果所带来的好处是:它能够更简单的实现局有弹性伸缩能力的
甄士隐
2022/01/27
2.1K0
SpringBoot整合Minio对象存储服务
在set中已经 存在,返回<x在set中的位置,false>
int array[] = { 2, 1, 3, 9, 6, 0, 5, 8, 4, 7 };
用户7737280
2024/08/24
2500
前后端分离项目,如何优雅实现文件存储!
学习本文需要一些MinIO的基础知识,还不了解的小伙伴可以参考下:Github标星19K+Star,10分钟自建对象存储服务!
macrozheng
2020/02/10
3.2K1
MinIO的使用(内含docker的简单使用)
MinIO 是全球领先的对象存储先锋,在标准硬件上,读/写速度上高达183 GB / 秒 和 171 GB / 秒。MinIO用作云原生应用程序的主要存储,与传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。通过添加更多集群可以扩展名称空间,更多机架,直到实现目标。同时,符合一切原生云计算的架构和构建过程,并且包含最新的云计算的全新的技术和概念。
花花522
2023/03/07
4.5K0
MinIO的使用(内含docker的简单使用)
一个简单易用的文件上传方案
现在 OSS 服务算是一个基础服务了,很多云服务厂商都有提供这样的服务,价格也不贵,松哥自己的 www.javaboy.org 用的就是类似的服务。 不过对于中小公司来说,除了购买 OSS 服务之外,也可以自己搭建专业的文件服务器,自己搭建专门的文件服务器的话,曾经比较专业的做法是 FastDFS,松哥之前也专门为之录过视频发在 B 站上,感兴趣的小伙伴可以自行查看。不过 FastDFS 搭建比较麻烦,非常容易出错,所以对各位小伙伴来说多多少少有一点门槛。 松哥在之前的文章录制的一些项目视频中,如果涉及到文
江南一点雨
2022/04/21
1.5K0
一个简单易用的文件上传方案
SpringBoot整合Minio 项目中使用自己文件存储服务器
minio介绍: MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储。 史上最详细Docker安装Minio
宁在春
2022/10/31
2.4K0
SpringBoot整合Minio 项目中使用自己文件存储服务器
相关推荐
对象存储OSS
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档