断点续传 本节主要介绍断点续传。 通过MultipleUpload类以及文件上传请求UploadFileRequest类,实现基于分段上传的断点续传的功能。 参数设置 名称 描述 :: EnableCheckpoint 是否开启断点续传功能。 取值: true:开启。 false:关闭。 默认值为false。 PartSize 每个分段的大小partSize,若partSize小于5MiB,则会将partSize调整至5MiB。 默认:5MiB。 UploadFile 上传的本地文件路径。 checkpointFile 记录本地分片上传结果的文件。如果未指定checkpointFile,默认为uploadFile.ucp,与上传的本地文件同路径。 objectMetadata 文件的元数据。 ProgressListener 上传状态监听器。 TaskNum 分片上传并发线程数,默认为1,最多为1000。 用checkpointFile来记录所有分片的状态。上传过程中的进度信息会保存在该文件中,如果某一分片上传失败,再次上传时会根据文件中记录的点继续上传。上传完成后,该文件会被删除。checkpointfile默认与待上传的本地文件同目录,为uploadFile.ucp。 Java上传代码示例 public static void multiUpload(AmazonS3 ossClient) { try { String bucketName "examplebucket"; String key "objecttest1.pdf" ; String uploadFile "D:tmp2.txt"; // 通过UploadFileRequest设置多个参数 UploadFileRequest request new UploadFileRequest(bucketName, key); // 上传的本地文件 request.setUploadFile(uploadFile); // 分片上传并发线程数,默认为1,最多为1000 request.setTaskNum(2); /每个分片的大小,默认5MiB,若partSize小于5MiB,除了最后一个分片以外,会将partSize调整至5MiB / request.setPartSize(5 1024 1024); // 开启断点续传功能,默认关闭 request.setEnableCheckpoint(true); /记录本地分片上传结果的文件。开启断点续传功能时需要设置此参数,上传过程中的进度信息会保存在该文件中,如果某一分片上传失败,再次上传时会根据文件中记录的点继续上传。/ // 上传完成后,该文件会被删除。默认与待上传的本地文件同目录,为uploadFile.ucp // request.setCheckpointFile(" "); MultipleUpload multiUpload new MultipleUpload(request, ossClient); // 断点续传上传 CompleteMultipartUploadResult result multiUpload.upload(); //System.out.println("location: "+result.getLocation()); System.out.println("Upload complete. Upload object name:" + result.getKey()); } catch (AmazonServiceException ase) { System.out.println("Caught an AmazonServiceException, which means your request made it " + "to OOS, but was rejected with an error response for some reason."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("OOS Error Code: " + ase.getErrorCode()); System.out.println("Request ID: " + ase.getRequestId()); } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which means the client encountered " "a serious internal problem while trying to communicate with OOS, " "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); } }