更新时间:2026-08-14 GMT+08:00
获取对象crc64
您可以通过以下接口获取对象crc64校验文件,并与本地计算的crc64校验文件比较从而实现crc64一致性校验:
如果对象存在CRC64值,则返回CRC64,否则不返回。
示例代码一:流式下载
以下代码展示如何在流式下载对象时获取CRC64。
import android.util.Log;
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.GetObjectRequest;
import com.obs.services.model.ObsObject;
import java.io.InputStream;
public class GetObjectWithCRC64Demo {
private static final String TAG = "GetObjectWithCRC64";
public void getObjectWithCRC64() {
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
// 您可以登录访问管理控制台获取访问密钥AK/SK
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
String endPoint = "https://your-endpoint";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
try {
// 流式下载对象
String bucketName = "examplebucket";
String objectKey = "objectname";
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
ObsObject obsObject = obsClient.getObject(getObjectRequest);
InputStream inputStream = obsObject.getObjectContent();
Log.i(TAG, "Server returned crc64 string:" + obsObject.getMetadata().getCrc64());
Log.i(TAG, "GetObject successfully");
// 读取完后请确保关闭输入流
inputStream.close();
} catch (ObsException e) {
Log.e(TAG, "GetObject failed");
Log.e(TAG, "HTTP Code:" + e.getResponseCode());
Log.e(TAG, "Error Code:" + e.getErrorCode());
Log.e(TAG, "Error Message:" + e.getErrorMessage());
Log.e(TAG, "Request ID:" + e.getErrorRequestId());
Log.e(TAG, "Host ID:" + e.getErrorHostId());
} catch (Exception e) {
Log.e(TAG, "GetObject failed");
Log.e(TAG, e.getMessage());
}
}
} 示例代码二:范围下载
以下代码展示如何在范围下载对象时获取CRC64。
import android.util.Log;
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.GetObjectRequest;
import com.obs.services.model.ObsObject;
import java.io.InputStream;
public class GetObjectRangeWithCRC64Demo {
private static final String TAG = "GetObjectRangeWithCRC64";
public void getObjectRangeWithCRC64() {
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
// 您可以登录访问管理控制台获取访问密钥AK/SK
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
String endPoint = "https://your-endpoint";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
try {
// 范围下载对象
String bucketName = "examplebucket";
String objectKey = "objectname";
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
// 指定开始和结束范围
getObjectRequest.setRangeStart(0L);
getObjectRequest.setRangeEnd(1000L);
ObsObject obsObject = obsClient.getObject(getObjectRequest);
InputStream inputStream = obsObject.getObjectContent();
Log.i(TAG, "Server returned crc64 string:" + obsObject.getMetadata().getCrc64());
Log.i(TAG, "GetObject successfully");
// 读取完后请确保关闭输入流
inputStream.close();
} catch (ObsException e) {
Log.e(TAG, "GetObject failed");
Log.e(TAG, "HTTP Code:" + e.getResponseCode());
Log.e(TAG, "Error Code:" + e.getErrorCode());
Log.e(TAG, "Error Message:" + e.getErrorMessage());
Log.e(TAG, "Request ID:" + e.getErrorRequestId());
Log.e(TAG, "Host ID:" + e.getErrorHostId());
} catch (Exception e) {
Log.e(TAG, "GetObject failed");
Log.e(TAG, e.getMessage());
}
}
} 示例代码三:获取对象元数据
以下代码展示如何获取对象的CRC64。
import android.util.Log;
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.ObjectMetadata;
public class GetObjectMetadataWithCRC64Demo {
private static final String TAG = "GetObjectMetadataCRC64";
public void getObjectMetadataWithCRC64() {
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
// 您可以登录访问管理控制台获取访问密钥AK/SK
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
// endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。
String endPoint = "https://your-endpoint";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
try {
// 获取对象元数据,读取CRC64值
String bucketName = "examplebucket";
String objectKey = "objectname";
ObjectMetadata objectMetadata = obsClient.getObjectMetadata(bucketName, objectKey);
Log.i(TAG, "Server returned crc64 string:" + objectMetadata.getCrc64());
Log.i(TAG, "GetObjectMetadata successfully");
} catch (ObsException e) {
Log.e(TAG, "GetObjectMetadata failed");
Log.e(TAG, "HTTP Code:" + e.getResponseCode());
Log.e(TAG, "Error Code:" + e.getErrorCode());
Log.e(TAG, "Error Message:" + e.getErrorMessage());
Log.e(TAG, "Request ID:" + e.getErrorRequestId());
Log.e(TAG, "Host ID:" + e.getErrorHostId());
} catch (Exception e) {
Log.e(TAG, "GetObjectMetadata failed");
Log.e(TAG, e.getMessage());
}
}
} 示例代码四:复制对象
以下代码展示如何在使用复制对象时获取CRC64。
import android.util.Log;
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.CopyObjectRequest;
import com.obs.services.model.CopyObjectResult;
public class CopyObjectWithCRC64Demo {
private static final String TAG = "CopyObjectWithCRC64";
public void copyObjectWithCRC64() {
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
// 您可以登录访问管理控制台获取访问密钥AK/SK
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
String endPoint = "https://your-endpoint";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
try {
// 复制对象
String sourceBucketName = "examplebucket";
String destBucketName = "destexamplebucket";
String sourceObjectKey = "objectname";
String destObjectKey = "copyobjectname";
CopyObjectRequest copyObjectRequest = new CopyObjectRequest(
sourceBucketName, sourceObjectKey, destBucketName, destObjectKey);
CopyObjectResult copyObjectResult = obsClient.copyObject(copyObjectRequest);
String crc64 = copyObjectResult.getCRC64();
Log.i(TAG, "Server returned crc64 string:" + crc64);
Log.i(TAG, "CopyObject successfully");
} catch (ObsException e) {
Log.e(TAG, "CopyObject failed");
Log.e(TAG, "HTTP Code:" + e.getResponseCode());
Log.e(TAG, "Error Code:" + e.getErrorCode());
Log.e(TAG, "Error Message:" + e.getErrorMessage());
Log.e(TAG, "Request ID:" + e.getErrorRequestId());
Log.e(TAG, "Host ID:" + e.getErrorHostId());
} catch (Exception e) {
Log.e(TAG, "CopyObject failed");
Log.e(TAG, e.getMessage());
}
}
} 父主题: 校验文件一致性