斷點續傳上傳將要上傳的檔案分成若干個分區(Part)分別上傳,所有分區都上傳完成後,將所有分區合并成完整的檔案,完成整個檔案的上傳。
以下代碼用於斷點續傳上傳:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ObjectMetadata meta = new ObjectMetadata();
// 指定上傳的內容類型。
meta.setContentType("text/plain");
// 通過UploadFileRequest設定多個參數。
UploadFileRequest uploadFileRequest = new UploadFileRequest("<yourBucketName>","<yourObjectName>");
// 通過UploadFileRequest設定單個參數。
// 設定儲存空間名稱。
//uploadFileRequest.setBucketName("yourucketname");
// 設定檔案名稱。
//uploadFileRequest.setKey("<yourObjectName>");
// 指定上傳的本地檔案。
uploadFileRequest.setUploadFile("<yourLocalFile>");
// 指定上傳並發線程數,預設為1。
uploadFileRequest.setTaskNum(5);
// 指定上傳的分區大小,範圍為100KB~5GB,預設為檔案大小/10000。
uploadFileRequest.setPartSize(1 * 1024 * 1024);
// 開啟斷點續傳,預設關閉。
uploadFileRequest.setEnableCheckpoint(true);
// 記錄本地分區上傳結果的檔案。開啟斷點續傳功能時需要設定此參數,上傳過程中的進度資訊會保存在該檔案中,如果某一分區上傳失敗,再次上傳時會根據檔案中記錄的點繼續上傳。上傳完成後,該檔案會被刪除。預設與待上傳的本地檔案同目錄,為uploadFile.ucp。
uploadFileRequest.setCheckpointFile("<yourCheckpointFile>");
// 檔案的元資料。
uploadFileRequest.setObjectMetadata(meta);
// 設定上傳成功回調,參數為Callback類型。
uploadFileRequest.setCallback("<yourCallbackEvent>");
// 斷點續傳上傳。
ossClient.uploadFile(uploadFileRequest);
// 關閉OSSClient。
ossClient.shutdown();
斷點續傳詳情請參見開發指南中的斷點續傳。