You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:45:25