背景
在云服务器时代下附件或资源文件很少放在运行的服务器上,不利于多服务器访问,最简单的方式是将此类资源上传到对象存储COS。
什么是对象存储COS
对象存储(Cloud Object Storage,COS)是无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。
阿里云和腾讯云等大厂云服务都有此类服务
目的
了解如何上传文件到COS以及上传后如何访问上传后的文件
解决
以腾讯对象存储为例,将项目中需要保存的文件保存到对象存储中。
腾讯对象存储文档点这里
实例
使用腾讯COS上传文件十分简单,官方文档有详细的介绍,具体步骤如下
引入COS的SDK,支持Maven方式
获取腾讯云的密钥信息,密钥管理地址
将本地文件上传,官方还有各种语言的代码示例
如果密钥管理地址无法找到密钥信息,可以在腾讯云首页搜索 访问管理->访问密钥->API密钥管理
上实例
安装腾讯云SDK点这里,看文档
以下是Maven方式
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.97</version>
</dependency>
代码实现
public class PutObject {
public static void main(String[] args) {
putObjectDemo();
}
static void putObjectDemo() {
// 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials("AKIDXXXXXXXX","1A2Z3YYYYYYYYYY");
// 设置bucket的区域, COS地域的简称请参照 https://www.qcloud.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-guangzhou"));
// 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
String bucketName = "examplebucket-1251668577";
String key = "abc/abc.txt"; // 上传后的文件名
String localPath = "abc.txt"; // 本地文件的相对路径或全路径
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, new File(localPath));
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
System.out.println(putObjectResult.getRequestId());
}
}
以接口的方式上传一个文档到COS,这是腾讯云给的官方实现代码。根据官方代码的信息可以看出我们需要准备以下几个数据:
身份信息
存储桶bucket信息
本地文件的全路径或可访问的相对路径
获取身份信息
步骤2就是获取身份信息的操作
存储桶信息
首先需要创建存储桶,然后拿到创建成功的存储桶的名称和地域。
既可以通过调用API的方式创建,也可以直接在控制台创建。为了简单直观直接在控制台创建,API的方式可以参考官方文档自行实现。
上传完成后如何访问
上传完成后在存储桶列表可直接复制文件的访问路径。复制出来的文件url大致是https://YOUR-BUCKET-NAME.cos.YOUR-BUCKET-REGION.myqcloud.com/YOUR-FILENAME
只要固定YOUR-FILENAME之前的域名后续跟上新上传的文件名即可,YOUR-FILENAME就是上面代码中的key的值