简单获取对象
最近更新时间: 2024-10-17 17:10:00
适用场景
您可以直接发起请求获取 COS 中的对象,获取对象支持以下功能:
获取完整的单个对象:直接发起 GET 请求即可获取完整的对象数据。
获取单个对象的部分内容:可在 GET 请求中传入
Range
请求头部,支持检索一个特定的字节范围。不支持检索多个范围。
对象的元数据将会作为 HTTP 响应头部随对象内容一同返回,GET 请求支持使用 URL 参数的方式覆盖响应的部分元数据值,例如 Content-Dispositon
的响应值。支持修改的响应头部包括:
Content-Type
Content-Language
Expires
Cache-Control
Content-Disposition
Content-Encoding
使用方法
使用 REST API
您可以直接使用 REST API 发起一个获取对象请求,可参考 GET Object 文档说明。
使用 Java SDK
对象存储 COS 的 Java SDK 中提供了此方法,可参考 Java SDK 接口文档 Get Object 部分。
步骤说明
初始化客户端 cosclient。
执行 getObject 方法获取输入流或者将内容保存到本地。
代码示例
- 以下代码演示了如何下载对象(无版本控制):
// 1 初始化用户身份信息(appid, secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials("1250000", "AKIDXXXXXXXX", "1A2Z3YYYYYYYYYY");
// 2 设置bucket的区域, COS地域的简称请参照 /document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1"));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// 设置bucket名
String bucketName = "mybucket";
String key = "aaa.txt";
try {
// 下载文件
COSObject cosObject = cosclient.getObject(bucketName, key);
// 获取输入流
COSObjectInputStream cosObjectInput = cosObject.getObjectContent();
// 关闭输入流
cosObjectInput.close();
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}
GetObjectRequest
支持指定要从对象检索的数据字节范围,以下代码演示了指定字节的方法:
// 1 初始化用户身份信息(appid, secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials("1250000", "AKIDXXXXXXXX", "1A2Z3YYYYYYYYYY");
// 2 设置bucket的区域, COS地域的简称请参照 /document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1"));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// 设置bucket名
String bucketName = "mybucket";
String key = "aaa.txt";
try {
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
// 设置下载前11个字节
getObjectRequest.setRange(0, 10);
// 下载文件
COSObject cosObject = cosclient.getObject(bucketName, key);
// 获取输入流
COSObjectInputStream cosObjectInput = cosObject.getObjectContent();
// 关闭输入流
cosObjectInput.close();
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}
- 检索对象时还可以用
ResponseHeaderOverrides
对象并设置相应的请求属性来替换响应头部值,以下是该方法的示例:
// 1 初始化用户身份信息(appid, secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials("1250000", "AKIDXXXXXXXX", "1A2Z3YYYYYYYYYY");
// 2 设置bucket的区域, COS地域的简称请参照 /document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1"));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// 设置bucket名
String bucketName = "mybucket";
String key = "aaa.txt";
try {
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ResponseHeaderOverrides responseHeaders = new ResponseHeaderOverrides();
String responseContentType="image/x-icon";
String responseContentEncoding = "gzip,deflate,compress";
String responseContentLanguage = "zh-CN";
String responseContentDispositon = "filename=\"abc.txt\"";
String responseCacheControl = "no-cache";
String expireStr = DateUtils.formatRFC822Date(new Date(System.currentTimeMillis() + 24 * 3600 * 1000));
responseHeaders.setContentType(responseContentType);
responseHeaders.setContentEncoding(responseContentEncoding);
responseHeaders.setContentLanguage(responseContentLanguage);
responseHeaders.setContentDisposition(responseContentDispositon);
responseHeaders.setCacheControl(responseCacheControl);
responseHeaders.setExpires(expireStr);
getObjectRequest.setResponseHeaders(responseHeaders);
// 下载文件
COSObject cosObject = cosclient.getObject(bucketName, key);
// 获取输入流
COSObjectInputStream cosObjectInput = cosObject.getObjectContent();
// 关闭输入流
cosObjectInput.close();
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}