斷點續傳下載是指用戶端在從網路上下載資源時,由於網路等原因中斷下載。當您再次開啟下載時,可以從已下載完成的部分繼續下載未完成的部分,從而節省時間和流量。
注意事項
使用本文樣本前您需要先通過自訂網域名、STS等方式建立OSSClient,具體請參見如何初始化Android端OSSClient執行個體。
範例程式碼
以下代碼用於斷點續傳下載:
// 填寫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());
}
}
});
相關文檔
關於斷點續傳下載的完整範例程式碼,請參見GitHub樣本。
關於斷點續傳下載的API介面說明,請參見GetObject。
關於初始化OSSClient,請參見如何初始化Android端OSSClient執行個體。