更新时间:2026-08-14 GMT+08:00

下载时使用crc64校验文件一致性

您可以通过断点续传下载接口获取对象的CRC64校验值,并与本地计算的CRC64校验值比较从而实现一致性校验:

示例代码:断点续传下载

以下代码展示如何在断点续传下载时使用CRC64校验一致性。

import android.util.Log;

import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.DownloadFileRequest;
import com.obs.services.model.DownloadFileResult;

public class DownloadFileWithCRC64Demo {
    private static final String TAG = "DownloadFileWithCRC64";

    public void downloadFileWithCRC64() {
        // 认证用的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 {
            DownloadFileRequest request = new DownloadFileRequest("examplebucket", "objectname");
            // 设置下载到本地的文件路径
            request.setDownloadFile("/sdcard/Download/localfile");
            // 开启CRC64校验,SDK会自动计算本地文件的CRC64并与服务端返回值比对
            request.setNeedCalculateCRC64(true);

            DownloadFileResult result = obsClient.downloadFile(request);
            Log.i(TAG, "DownloadFile successfully");
            Log.i(TAG, "HTTP Code:" + result.getStatusCode());
        } catch (ObsException e) {
            Log.e(TAG, "DownloadFile 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, "DownloadFile failed");
            Log.e(TAG, e.getMessage());
        }
    }
}