更新时间: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());
        }
    }
}