S3文件上传
学习如何使用S3将文件上传至Supabase存储
您可以使用 S3 协议将文件上传至 Supabase Storage。要开始使用 S3,请参阅 S3 设置指南。
S3 协议支持以下文件上传方式:
- 单次请求上传
- 通过分片上传(Multipart Upload)进行多次请求上传
单次请求上传
PutObject
操作通过单次请求上传文件,其行为与 Supabase SDK 的标准上传一致。
对于较小文件且重试整个上传不会造成问题时,请使用 PutObject
。付费计划中的最大文件大小为 50 GB。
例如,使用 JavaScript 和 aws-sdk
客户端:
1234567891011121314import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'const s3Client = new S3Client({...})const file = fs.createReadStream('path/to/file')const uploadCommand = new PutObjectCommand({ Bucket: 'bucket-name', Key: 'path/to/file', Body: file, ContentType: 'image/jpeg',})await s3Client.send(uploadCommand)
分片上传
分片上传将文件分割成较小的部分并并行上传,可在高速网络下最大化上传速度。当上传大文件时,这种方式允许您在网络出现问题时重试单个分片的上传。
对于服务器端上传,当您希望以牺牲可恢复性为代价来最大化上传速度时,此方法比可恢复上传更可取。付费计划中的最大文件大小为 50 GB。
分块上传文件
使用 S3 客户端中的 Upload
类来实现文件的分块上传。以下是一个 JavaScript 示例:
123456789101112131415import { S3Client } from '@aws-sdk/client-s3'import { Upload } from '@aws-sdk/lib-storage'const s3Client = new S3Client({...})const file = fs.createReadStream('path/to/very-large-file')const upload = new Upload(s3Client, { Bucket: 'bucket-name', Key: 'path/to/file', ContentType: 'image/jpeg', Body: file,})await uploader.done()
中止分块上传
所有分块上传操作会在 24 小时后自动中止。如需提前中止分块上传,可以使用 AbortMultipartUpload
操作。