TG:@yunlaoda360
阿里云OSS支持大文件分片上传,这是其重要的功能之一,尤其适用于大文件(如视频、大型软件包等)的高效上传。以下是分片上传的机制和限制:
分片上传机制
分片上传(Multipart Upload)将大文件分成多个分片(Part),分别上传后再合并。具体流程如下:
- 初始化分片上传:调用
InitiateMultipartUpload接口,获取UploadId。 - 上传分片:将文件切分成多个分片,每个分片大小通常在5MB到5GB之间。然后并行或串行上传各个分片。
- 完成分片上传:所有分片上传完成后,调用
CompleteMultipartUpload接口将分片合并成一个完整的Object。
分片上传限制
- 单分片大小:每个分片的大小必须在5MB到5GB之间。
- 总文件大小:分片上传支持的文件大小不超过48.8TB。
- 分片数量:一个分片上传任务最多支持10000个分片。
优势
- 断点续传:如果上传过程中因网络问题中断,可以从中断处继续上传,无需重新开始。
- 提高效率:通过并行上传多个分片,充分利用网络带宽,加快上传速度。
示例代码(Java SDK)
以下是使用Java SDK进行分片上传的示例代码:
java
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String uploadId = ossClient.initMultipartUpload(new InitiateMultipartUploadRequest(bucketName, objectName)).getUploadId();
// 上传分片
for (int i = 0; i < partCount; i++) {
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(bucketName);
uploadPartRequest.setKey(objectName);
uploadPartRequest.setUploadId(uploadId);
uploadPartRequest.setPartNumber(i + 1);
uploadPartRequest.setInputStream(partInputStreams[i]);
ossClient.uploadPart(uploadPartRequest);
}
// 完成分片上传
CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
ossClient.completeMultipartUpload(completeMultipartUploadRequest);
通过分片上传,你可以高效地管理大文件的上传过程,确保数据的完整性和传输的可靠性