S3 Multipart 分片直传与断点续传实践关键步骤(JavaScript/TypeScript)import { S3Client, CreateMultipartUploadCommand, UploadPartCommand, CompleteMultipartUploadCommand } from '@aws-sdk/client-s3'
const s3 = new S3Client({ region: 'us-east-1' })
const create = await s3.send(new CreateMultipartUploadCommand({ Bucket: 'uploads', Key: 'big.bin', ContentType: 'application/octet-stream' }))
const uploadId = create.UploadId!
const parts = [] as { ETag: string, PartNumber: number }[]
for (let partNumber = 1; partNumber <= totalParts; partNumber++) {
const body = getChunk(partNumber) // 读取分片
const resp = await s3.send(new UploadPartCommand({ Bucket: 'uploads', Key: 'big.bin', PartNumber: partNumber, UploadId: uploadId, Body: body }))
parts.push({ ETag: resp.ETag!, PartNumber: partNumber })
}
await s3.send(new CompleteMultipartUploadCommand({ Bucket: 'uploads', Key: 'big.bin', UploadId: uploadId, MultipartUpload: { Parts: parts } }))
断点续传要点记录 `uploadId` 与已成功分片的 `ETag/PartNumber`失败时重试对应分片并最终完成合并总结Multipart 能显著提升大文件上传效率并支持断点续传,需妥善记录分片进度以确保可靠性。

发表评论 取消回复