能否使用AWS SDK生成多文件上传的Pre-signed URL?
生成多文件上传的S3预签名URL
可以生成多文件上传的预签名URL,但AWS S3的预签名URL是单个对象上传专用的,因此要实现多文件上传,需要为每个文件单独生成对应的预签名URL。
以下是基于你现有代码修改的批量生成示例:
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3' import { getSignedUrl } from '@aws-sdk/s3-request-presigner' const client = new S3Client({ region: 'ap-northeast-1' }) const bucketName = 'BUCKET_NAME'; // 模拟待上传文件的Key列表,实际场景可从前端文件列表中动态生成唯一Key const fileKeys = [ `public/1/photos/124.jpg`, `public/1/photos/125.png`, `public/1/photos/126.gif` ]; // 批量生成预签名URL的函数 async function generateMultipleSignedUrls() { const signedUrls = []; for (const key of fileKeys) { const command = new PutObjectCommand({ Bucket: bucketName, Key: key }); const signedUrl = await getSignedUrl(client, command, { expiresIn: 3600 }); signedUrls.push({ fileKey: key, signedUrl }); } return signedUrls; } // 调用示例 generateMultipleSignedUrls().then(urlList => { console.log('多文件预签名URL:', urlList); });
关键注意事项
- 每个预签名URL绑定唯一的S3对象Key,务必保证Key的唯一性,防止覆盖已存在的文件
- 实际开发中,可结合用户ID、时间戳、原文件名等信息生成唯一Key,避免冲突
- 预签名URL的
expiresIn参数可统一配置,也能为不同文件单独设置过期时间
内容的提问来源于stack exchange,提问作者kusumoto_teruya
相关产品推荐
相关产品推荐

