全部產品
Search
文件中心

Object Storage Service:Android斷點續傳下載

更新時間:Feb 28, 2024

斷點續傳下載是指用戶端在從網路上下載資源時,由於網路等原因中斷下載。當您再次開啟下載時,可以從已下載完成的部分繼續下載未完成的部分,從而節省時間和流量。

注意事項

範例程式碼

以下代碼用於斷點續傳下載:

// 填寫Bucket名稱,例如examplebucket。
// 填寫不包含Bucket名稱在內的Object完整路徑,例如exampledir/exampleobject.txt。
String objectKey = "exampledir/exampleobject.txt";
// 填寫下載到本地檔案所在的完整路徑。
String localFile = "/storage/emulated/0/oss/examplefile.txt";
ResumableDownloadRequest request = new ResumableDownloadRequest(bucketName, objectKey, localFile);
// 設定分區大小,單位為B。單個分區大小預設256 KB(即256*1024)。如果無特殊需求,無需手動設定此參數。
request.setPartSize(256*1024);
// 開啟斷點續傳下載功能。
request.setEnableCheckPoint(true);
// 設定斷點記錄檔案的完整路徑。只有當Object下載中斷產生了斷點記錄檔案後,如果需要繼續下載該Object,才需要設定對應的斷點記錄檔案。
request.setCheckPointFilePath("/storage/emulated/0/oss");
request.setProgressListener(new OSSProgressCallback() {
    @Override
    public void onProgress(Object request, long currentSize, long totalSize) {
        Log.d("ResumableDownload", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
OSSAsyncTask task = oss.asyncResumableDownload(request, new OSSCompletedCallback<ResumableDownloadRequest, ResumableDownloadResult>() {
    @Override
    public void onSuccess(ResumableDownloadRequest request, ResumableDownloadResult result) {
        Log.d("ResumableDownload", "DownloadSuccess");
    }

    @Override
    public void onFailure(ResumableDownloadRequest request, ClientException clientException, ServiceException serviceException) {
        // 請求異常。
        if (clientException != null) {
            // 用戶端異常,例如網路異常等。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // 服務端異常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

相關文檔