最近更新时间:2024-10-24 19:18:11
当文件大小超过5GB时,适用分块上传方式。分块上传包括三个步骤:
初始化分块上传(initiateMultipartUpload),得到 uploadId。
使用uploadId上传分块(uploadPart)。
完成分块上传(completaMultipartUpload)。
client.object.initiateMultipartUpload({
Bucket: '<bucketName>', // 填入存储桶,非必填
Key: '<objectKey>',// 填入对象键,必填字段
ACL: '', // 访问控制,非必填
StorageClass: '', // 存储类型,非必填
headers: {} // 非必填
}, function (err, data, res) {
console.log(data) //获取后续请求所需的UploadId
})
client.object.uploadPart({
Bucket: '<bucketName>',
Key: '<objectKey>', // 必填
UploadId: '', // 必填, 上传的uploadid
PartNumber: 1, //必填, 分块的编号
Body: '' // 必填, 所有分块数据的集合,以xml格式传递
}, function (err, data, res) {
console.log(response.statusCode) // 上传成功返回200
console.log(response.headers.etag) // 上传成功返回etag,后面合并分块会用到
})
client.object.completaMultipartUpload({
Bucket: '<bucketName>', //非必填
Key: '<objectKey>', // 必填
UploadId: '', // 必填, 上传的uploadid
Body: '' // 必填, 分块数据
}, function (err, data, res) {
console.log(err, data)
})
以下代码用于终止分块上传并删除已上传分块(abortMultipartUpload)。
client.object.abortMultipartUpload({
Bucket: '<bucketName>', //非必填
Key: '<objectKey>', // 必填
UploadId: '', // 必填, 上传的uploadid
}, function (err, data, res) {
if (!err) console.log('cancel upload success')
})
client.object.listParts({
Bucket: '<bucketName>', //非必填
Key: '<objectKey>', // 必填
UploadId: '', // 必填, 上传的uploadid
}, function (err, data, res) {
console.log(err)
console.log('data:', data)
})
client.object.listParts({
Bucket: '<bucketName>', //非必填
Key: '<objectKey>', // 必填
UploadId: '', // 必填, 上传的uploadid
}, function (err, data, res) {
console.log(err)
console.log('data:', data)
})
client.bucket.listMultipartUploads({
Bucket: '<bucketName>',
Delimiter: '', //指定分隔符,非必填
EncodingType: '', //指定返回结果的编码方式,可选值:url,非必填
MaxUploads: 1000, //限定要列出正在进行任务的上限值([1,1000]),默认为1000,非必填
KeyMarker: '', //列出所有key按照词典顺序比key-marker参数值大的任务,非必填
UploadIdMarker: '', //与key-marker配合使用,指定列举目标空间中正在进行分块上传任务的起始位置,非必填
Prefix: '', //限定响应结果列表使用的前缀,非必填
}, function (rerr, data, response, body) {
console.log(response.statusCode)// 成功返回200
})
1. 该完整示例没有对异常做处理,是一种理想情况下的场景。建议结合自身的业务调整逻辑。有关异常处理的详情,请参见文档:SDK异常处理。
2. 有关分块上传的API详情,请参见文档:Initiate Multipart Upload、Upload Part、Complete Multipart Upload。
纯净模式