@aws-sdk/s3-presigned-post

中文文档
3.1164.0发布于 2026/11/07Apache-2.0TypeScriptESM + CJS近 30 天下载 1302.9万

NPM version [NPM downloads[https://www.npmjs.com/package/@

中文使用文档
文档目录5 节
  1. 导入
  2. 创建 POST 策略
  3. 创建指定员额
  4. 使用 HTML 窗体张贴文件
  5. 在 Node.js 中使用 FormData 的邮递文件

@aws-sdk/s3- 指定员额

NPM version NPM downloads

此软件包提供了一个生成 URL 和字段的函数 。 没有 AWS 证书的用户可以使用 URL 和字段 向 S3 提出 POST 请求 。 服务器侧面特性的文档可见于 S3 API 参考文献。请阅读相关章节以了解更多上下文.

导入

Java 脚本示例 :

const { createPresignedPost } = require("@aws-sdk/s3-presigned-post");
const { S3Client } = require("@aws-sdk/client-s3");

ES6 示例

import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
import { S3Client } from "@aws-sdk/client-s3";

创建 POST 策略

您可选择在预签职位上附加政策。 它规定了请求必须满足的条件清单. 例如:

const Conditions = [
  { acl: "bucket-owner-full-control" },
  { bucket: "johnsmith" },
  ["starts-with", "$key", "user/eric/"],
];

访问 S3 POST 文档 支持的政策要素。 如果包含条件,则必须在 Fields 参数 还有 字段词典不会根据条件自动添加一个值 .

创建指定员额

用户可以为 POST 请求生成所需的url 和字段 :

const client = new S3Client({ region: "us-west-2" });
const Bucket = "johnsmith";
const Key = "user/eric/1";
const Fields = {
  acl: "bucket-owner-full-control",
};
const { url, fields } = await createPresignedPost(client, {
  Bucket,
  Key,
  Conditions,
  Fields,
  Expires: 600, //Seconds before the presigned post expires. 3600 by default.
});

这个 Bucket, (中文(简体) ), Key 中的其他数值 Fields 必须符合下列条件: Conditions编辑 Key 还可以 包含 ${filename} 将自动被所提供文件的名称所取代。 见 s3 参考文献 更多信息.

使用 HTML 窗体张贴文件

您也可以用 HTML 格式发布文件 :

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
    <!-- Copy the 'url' value returned by createPresignedPost() -->
    <form action="URL_VALUE" method="post" enctype="multipart/form-data">
      <!-- Copy the 'fields' key:values returned by S3Client.generate_presigned_post() -->
      <input type="hidden" name="key" value="VALUE" />
      <input type="hidden" name="AWSAccessKeyId" value="VALUE" />
      <input type="hidden" name="policy" value="VALUE" />
      <input type="hidden" name="signature" value="VALUE" />
      File:
      <input type="file" name="file" /> <br />
      <input type="submit" name="submit" value="Upload to Amazon S3" />
    </form>
  </body>
</html>

在 Node.js 中使用 FormData 的邮递文件

在节点.js中,使用 form-data 发布文件的软件包 :

const { createReadStream } = require("fs");
const FormData = require("form-data");

const form = new FormData();
Object.entries(fields).forEach(([field, value]) => {
  form.append(field, value);
});
form.append("file", createReadStream("path/to/a/file"));
form.submit(url, (err, res) => {
  //handle the response
});

版本与发布记录

@aws-sdk/s3-presigned-post 共发布 766 个版本,首次发布于 2020/10/31;过去 12 个月发布了 222 个版本。

版本发布日期距今
3.1164.0latest2026/11/07今天
3.1163.02026/11/062 天前
3.1162.02026/11/052 天前
3.1161.02026/10/318 天前
3.1160.02026/10/309 天前
3.1159.02026/10/2910 天前

其他发布通道:rc → 3.5.1-rc.0。

关于 @aws-sdk/s3-presigned-post 的常见问题

@aws-sdk/s3-presigned-post 是什么?

[[https://www.npmjs.com/package/@

如何安装 @aws-sdk/s3-presigned-post?

在项目目录运行 npm install @aws-sdk/s3-presigned-post,或使用 pnpm add / yarn add / bun add。

@aws-sdk/s3-presigned-post 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-sdk/s3-presigned-post 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aws-sdk/s3-presigned-post 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-sdk/s3-presigned-post 可以商用吗?

@aws-sdk/s3-presigned-post 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-sdk/s3-presigned-post 的下载量有多少?

根据 npm 官方下载统计,@aws-sdk/s3-presigned-post 在 2026/10/08 – 2026/11/06 这 30 天内被下载 13,028,658 次,日均约 434,289 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-sdk/s3-presigned-post 还在维护吗?

最新版本 3.1164.0 发布于 2026/11/07(今天);至今共发布 766 个版本,其中过去 12 个月发布了 222 个;首次发布于 2020/10/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。