简单获取对象
最近更新时间: 2024-06-12 15:06: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(); }