# @aws-sdk/s3-presigned-post 中文文档

规范地址：https://npmcn.com/package/%40aws-sdk/s3-presigned-post/

版本：3\.1164\.0
npm 元数据更新时间：2026-11-06T20:14:22.293Z
中文译文更新时间：2026-11-07T10:04:56.707Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws-sdk/s3-presigned-post
原文对照：https://npmcn.com/package/%40aws-sdk/s3-presigned-post/?lang=original
项目主页：https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-presigned-post
源码仓库：https://github.com/aws/aws-sdk-js-v3

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：26.6 kB，16 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20\.0\.0
- 运行依赖：7 个
- 首次发布：2020-10-31T01:07:49.131Z
- 最新版本发布：2026-11-06T20:14:22.086Z
- 近 30 天下载量：13028658（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：766（近 12 个月 221 个）

## 中文简介

[![NPM version](https://img.shields.io/npm/v/@aws-sdk/s3-presigned-post/latest.svg)](https://www.npmjs.com/package/@aws-sdk/s3-presigned-post) \[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/s3-presigned-post.svg)\[https://www.npmjs.com/package/@

## 安装

```sh
npm install @aws-sdk/s3-presigned-post
```

也可以使用：`pnpm add @aws-sdk/s3-presigned-post`、`yarn add @aws-sdk/s3-presigned-post`、`bun add @aws-sdk/s3-presigned-post`

## README

# @aws-sdk/s3- 指定员额

[![NPM version](https://img.shields.io/npm/v/@aws-sdk/s3-presigned-post/latest.svg)](https://www.npmjs.com/package/@aws-sdk/s3-presigned-post) [![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/s3-presigned-post.svg)](https://www.npmjs.com/package/@aws-sdk/s3-presigned-post)

此软件包提供了一个生成 URL 和字段的函数 。 没有 AWS 证书的用户可以使用 URL 和字段 向 S3 提出 POST 请求 。 服务器侧面特性的文档可见于 [S3 API 参考文献](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html)。请阅读相关章节以了解更多上下文.

### 导入

Java 脚本示例 :

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

ES6 示例

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

### 创建 POST 策略

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

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

访问 [S3 POST 文档](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html) 支持的政策要素。 如果包含条件,则必须在 `Fields` 参数 还有 字段词典不会根据条件自动添加一个值 .

### 创建指定员额

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

```typescript
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 参考文献](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTForms.html#sigv4-HTTPPOSTFormFields) 更多信息.

### 使用 HTML 窗体张贴文件

您也可以用 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` 发布文件的软件包 :

```typescript
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 是什么？

\[\[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（1 天前）；至今共发布 766 个版本，其中过去 12 个月发布了 221 个；首次发布于 2020/10/31。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

