什么是对象存储

对象存储是一种将数据作为对象进行管理的计算机数据存储体系结构,与其他存储体系结构(例如将数据作为文件层级管理的文件系统)以及将数据作为块和扇区内的块进行管理的块存储相对。每个对象通常包括数据本身,可变数量的元数据和全局唯一标识符

对象存储可以在多个级别实现,包括设备级别(对象存储设备),系统级别和接口级别。在每种情况下,对象存储都试图实现其他存储架构无法解决的功能,例如可以由应用程序直接编程的接口,可以跨越多个物理硬件实例的命名空间,以及数据管理功能,如数据复制和数据分发在对象级粒度。

相比于数据库这种面向结构化数据存储的技术对象存储主要面向存储大量的非结构化数据通俗来说,我们日常生活中生成的照片、视频、音频、文档等都属于非结构化数据。这些日常产生的数据都适合存储在对象存储中

现在几乎所有公有云服务商都提供对象存储服务,如果要在企业内部使用,也可以采用元核云、紫光西数这类专业存储公司提供的企业级对象存储产品。

腾讯云cos使用指南

阿里云对象存储:oss
腾讯云对象存储:cos
本文主要对腾讯云cos进行介绍

1、进入管理控制台

开通OSS服务还会额外赠送50G半年的免费容量


开通服务之后首先要创建一个存储桶,我理解应该就是类似于一个独立的存储空间,你可以针对这个存储桶设置访问权限,我这里是要用来做图床,所以是设定了私有写和公有读



2、测试通过控制台,上传文件



上传成功后,可以查看到上传的图片详情

集成腾讯云cos

腾讯云OSS的SDK文档
此处作者使用的开发语言为java,腾讯云OSS的javaSDK文档
使用SDK需要一些必要信息,比如secret_key和secret_id,这个可以从API密钥管理页面获取。

环境依赖
SDK 支持 JDK 1.7、1.8及以上版本。

1、修改配置

     <!--腾讯云cos依赖--><dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.54</version></dependency><!-- 日期工具栏依赖 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency>

2、添加配置文件内容

# 服务端口
server.port=8205
# 服务名
spring.application.name=service-oss#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8#腾讯云api秘钥id
tencent.yun.secretid=
#腾讯云api秘钥key
tencent.yun.secretkey=

3、创建初始化配置的工具类

/*** 在主启动类启动时初始化配置文件中的内容* <p>* 创建时间: 2022-03-24 14:46** @author v_fuxshen* @version v1.0.0* @since v1.0.0*/
@Component
public class ConstantOssPropertiesUtils implements InitializingBean {@Value("${tencent.yun.secretid}")private String secretId;@Value("${tencent.yun.secretkey}")private String secretKey;public static String Tencent_secretId;public static String Tencent_secretKey;@Overridepublic void afterPropertiesSet() throws Exception {Tencent_secretId = secretId;Tencent_secretKey = secretKey;}
}

4、测试如何创建存储桶

public class OssTest {public static void main(String[] args) {// 1 初始化用户身份信息(secretId, secretKey)。// SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理String secretId = "";String secretKey = "";COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。Region region = new Region("ap-guangzhou");//此处设置的地域为广州ClientConfig clientConfig = new ClientConfig(region);// 这里建议设置使用 https 协议// 从 5.6.54 版本开始,默认使用了 httpsclientConfig.setHttpProtocol(HttpProtocol.https);// 3 生成 cos 客户端。COSClient cosClient = new COSClient(cred, clientConfig);//创建存储桶  如果腾讯云cos中已经存在存储通,那么此步骤可省略String bucket = ""; //存储桶名称,格式:BucketName-APPIDCreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);// 设置 bucket 的权限为 Private(私有读写)、其他可选有 PublicRead(公有读私有写)、PublicReadWrite(公有读写)createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);try{Bucket bucketResult = cosClient.createBucket(createBucketRequest);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}
}

5、编写接口实现

controller

@RestController
@RequestMapping("/api/oss/file")
@Api(tags = "腾讯云cos接口")
public class FileApiController {@Autowiredprivate FileService fileService;@PostMapping("fileUpload")@ApiOperation(value = "上传文件到腾讯云")public Result fileUpload(MultipartFile file){//获取上传文件(返回的为文件存储的路径)String url = fileService.fileUpload(file);return Result.success(url);}
}

service

@Service
@Slf4j
public class FileServiceImpl implements FileService {@Overridepublic String fileUpload(MultipartFile file) {// 1 初始化用户身份信息(secretId, secretKey)。// SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理String secretId = ConstantOssPropertiesUtils.Tencent_secretId;String secretKey = ConstantOssPropertiesUtils.Tencent_secretKey;COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。Region region = new Region("ap-guangzhou");ClientConfig clientConfig = new ClientConfig(region);// 这里建议设置使用 https 协议// 从 5.6.54 版本开始,默认使用了 httpsclientConfig.setHttpProtocol(HttpProtocol.https);// 3 生成 cos 客户端。COSClient cosClient = new COSClient(cred, clientConfig);// 指定文件将要存放的存储桶String bucketName = "yygh-bucket-1307593240";//文件名称 为了保证文件名称唯一,此处使用uuid来设置文件名称String filename = UUID.randomUUID().toString().replaceAll("-","") +"_"+file.getOriginalFilename();//目录的生成 当前日期SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");String date = dateFormat.format(new Date());// 指定文件上传到 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下//此处目录规则为  当前日期/文件名称String key = date+"/"+filename;PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, multipartFileToFile(file));PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);log.info("putObjectResult:"+putObjectResult);//删除本地上传资源delteTempFile(multipartFileToFile(file));Date expiration = new Date(new Date().getTime() + 5 * 60 * 10000);GeneratePresignedUrlRequest req =new GeneratePresignedUrlRequest(bucketName, key, HttpMethodName.GET);// 设置签名过期时间(可选), 若未进行设置, 则默认使用 ClientConfig 中的签名过期时间(1小时)// 可以设置任意一个未来的时间,推荐是设置 10 分钟到 3 天的过期时间req.setExpiration(expiration);URL url = cosClient.generatePresignedUrl(req);//关闭客户端cosClient.shutdown();//拼接文件地址StringBuffer stringBuffer = new StringBuffer().append(url.getProtocol()).append("://").append(url.getHost()).append(url.getPath());return stringBuffer.toString();}/*** 此方法将multipartFile转为file** @param file* @return java.io.File* @author v_fuxshen* @date 2022-03-24 15:10:03**/private File multipartFileToFile(MultipartFile file)  {File toFile = null;if (file.equals("") || file.getSize() <= 0) {file = null;} else {try {InputStream ins = null;ins = file.getInputStream();toFile = new File(file.getOriginalFilename());inputStreamToFile(ins, toFile);ins.close();} catch (IOException e) {e.printStackTrace();}}return toFile;}/*** 获取流文件* @param ins* @param file*/private static void inputStreamToFile(InputStream ins, File file) {try {OutputStream os = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);}os.close();ins.close();} catch (Exception e) {e.printStackTrace();}}/*** 删除本地临时文件* @param file*/public static void delteTempFile(File file) {if (file != null) {File del = new File(file.toURI());del.delete();}}
}


对象存储介绍(腾讯云cos)相关推荐

  1. 腾讯云对象存储 python_腾讯云对象存储(COS)服务的 API

    注意: 此文档仅适用于 COS XML 版本,版本可登陆后在 COS 控制台首页查看. 此文档不适用于 POST object 的 HTTP 请求. 使用对象存储服务 COS 时,可通过 RESTfu ...

  2. 微信小程序---腾讯云cos的使用---前端上传图片+后端生成临时密钥

    0. 腾讯云cos介绍: - 第一阶段:文件服务器,将文件存储在某个服务器(目录结构的划分). - 第二阶段:- 文件存储,将文件存储在某个服务器(目录结构的划分).- 对象存储,优化存储和操作优化( ...

  3. 腾讯cos做文件服务器,将腾讯云COS对象存储挂载至腾讯云服务器实现大硬盘存储...

    老蒋在前面的文章中有介绍到腾讯云COS对象存储的用途还是比较大的,有我们常见的用来当做网盘使用,也可以将用来网站静态文件分离,同时还有可以作为数据同步备份.在这篇文章中,我还准备测试商家支持将COS挂 ...

  4. 华为云实战 之 对象存储的使用以及与腾讯云COS对比

    一.OBS是什么 OBS即对象存储服务(Object Storage Service),是一个基于对象的海量存储服务,为客户提供海量.安全.高可靠.低成本的数据存储能力,包括:创建.修改.删除桶,上传 ...

  5. 阿里巴巴 OSS与AWS(亚马逊) S3 和腾讯云cos 存储服务 介绍篇

    前言 对象存储服务,简单来说,可以把它当成一个"网盘",可以上传下载数据,也可以直接在这个"网盘"中对文件进行某些操作. 1.定时或者基于某种条件自动地,每天从 ...

  6. 腾讯云cos html,腾讯云对象存储(COS)插件安装设置图文教程

    腾讯云对象存储(COS)插件是腾讯云官方开发的针对在 wordpress中使用腾讯云对象存储cos的用户开发的辅助插件.通过在 wordpress程序中安装插件的方式,很方便的把WordPress静态 ...

  7. SpringBoot整合腾讯云COS对象存储实现文件上传

    企业级项目开发中都会有文件.图片.视频等文件上传并能够访问的场景,对于初学者Demo可能会直接存储在应用服务器上:对于传统项目可能会单独搭建FastDFS.MinIO等文件服务来实现存储,这种方案可能 ...

  8. 配置腾讯云COS(云对象存储服务)

    一.腾讯云对象存储 1.1.1配置腾讯云Cos 目标: 配置一个腾讯云cos 由于上课的开发的特殊性,我们不希望把所有的图片都上传到我们自己的官方服务器上,这里我们可以采用一个腾讯云的图片方案 上边图 ...

  9. 腾讯云cos html,腾讯云COS对象存储基础设置全攻略记录

    腾讯云专题网在"创建腾讯云COS存储准备部署静态资源分离 及获取API授权"文章中分享到我们如何创建腾讯云COS对象存储以及获取API密钥的方法.但是,如果我们将腾讯云COS存储用 ...

  10. 2021最新 腾讯云COS对象存储的简单使用

    叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...

最新文章

  1. 收敛速度更快更稳定的Wasserstein GAN(WGAN)
  2. 让Python pip下载速度加速
  3. 线程池中的线程复用原理
  4. 强制进程结束(内核函数)
  5. mysql数据库连接失败,挑战大厂重燃激情!
  6. dubbo 注册中心zookeeper 手册
  7. 保存点云数据_3D点云配准(二多幅点云配准)
  8. 前锋php人工智能_人工智能除了学习php,还应该学什么?
  9. BZOJ 1801 chess 中国象棋
  10. getElementById和querySelector方法的区别
  11. 文件恢复原理Linux文件恢复工具-foremostextundelete
  12. echarts2的一个地图demo
  13. 数据采集笔记(八爪鱼)-task1
  14. spark标签计算及用户画像应用
  15. 《 没有业绩怎么写好年终总结.ppt 》
  16. 计算机 bat文件夹加密,无需第三方软件,自制批处理加密隐藏文件夹
  17. layer php相册层,贤心旧版jquery layer.js如何展示相册
  18. 架设国外服务器怎么维护,架设海外服务器流程分享
  19. 地铁客流量分析可视化演示系统(附代码)
  20. python ssl module_Python升级后ssl模块不可用问题解决和浅析

热门文章

  1. unity.UGUI事件系统之Drag滑动事件
  2. 乐高spike python_乐高教育EV3比SPIKE Prime更好的十个理由!
  3. RGMII以太网测试方案
  4. ORACLE函数返回数据或字符串
  5. 基于ETest的飞控系统半实物实时仿真
  6. java事务是怎么处理的_Java事务处理
  7. Linux下 文件或文件夹的复制(拷贝 cp)
  8. 无限联盟服务器,无限乱斗正式上线,全服服务器被网友挤爆!LOL重回巅峰状态!...
  9. java int 转 object_在java上将int转换为Object
  10. 引入阿里云字体图标库的方法