全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

分块上传(Node.js)

最近更新时间:2024-10-24 19:18:11

当文件大小超过5GB时,适用分块上传方式。分块上传包括三个步骤:

  1. 初始化分块上传(initiateMultipartUpload),得到 uploadId。

  2. 使用uploadId上传分块(uploadPart)。

  3. 完成分块上传(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)
 })

列出当前Bucket下所有分块上传任务

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 UploadUpload PartComplete Multipart Upload

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈