文件夹 Webhook
可以将外部发送的文件自动接收到指定文件夹。每个文件夹都会生成专属的接收地址,外部向该地址发送数据后,数据会自动保存到文件夹中。
开始之前
- 管理员设置:需要在设置 Webhook 策略中同时开启
启用入站 Webhook和允许用户签发 API 密钥。
在文件夹中创建 Webhook
- 选择要接收 Webhook 的文件夹名称旁的设置(⚙️)图标。

- 在
Webhook 接收选项卡中选择添加按钮。 - 选择认证方式和冲突策略。这两个值将在下文详细说明。

- 选择
创建按钮后,会生成该文件夹专属的接收地址(Endpoint URL)。如果选择了Secure,还会一并生成签名密钥(signing secret)。这些值只在此时显示,之后无法再次查看,请复制并保存到安全的地方。
- 按照界面上显示的接收地址和示例指南,在外部系统中设置 Webhook。各认证方式的请求示例请参见下文"选择认证方式"。
- 已设置 Webhook 的文件夹会显示 图标。
选择认证方式
创建 Webhook 时,选择 Simple 或 Secure。
| 认证方式 | 行为 |
|---|---|
Simple | 接收地址(URL)本身就是认证信息。无需额外签名,只需向发放的地址发送 POST 请求即可保存文件。 |
Secure | 每次请求都必须计算 HMAC 签名,并通过 X-Webhook-Timestamp、X-Webhook-Nonce、X-Webhook-Signature 标头一同发送。即使接收地址泄露到外部,没有签名的请求也会被拒绝。 |
使用 Simple 创建的 Webhook 仅凭 URL 即可发送请求。
# Upload a file via multipart
curl -i -X POST "https://<接收地址>?filename=photo.jpg" \
-F "file=@./photo.jpg"
使用 Secure 创建的 Webhook 必须将请求正文(对整个 multipart 正文,包括边界和各部分标头,计算得到的 SHA-256 哈希值)包含在签名中。

# Upload a file via multipart (with HMAC signature)
TS=$(date +%s)
NONCE=$(cat /proc/sys/kernel/random/uuid)
BOUNDARY="------------------------$(cat /proc/sys/kernel/random/uuid)"
TMP=$(mktemp /tmp/multipart.XXXXXX)
# Build the raw multipart body first, then hash that body.
printf -- --%s$'\r\n' "$BOUNDARY" > "$TMP"
printf 'Content-Disposition: form-data; name="file"; filename="photo.jpg"' >> "$TMP"
printf $'\r\n' >> "$TMP"
printf 'Content-Type: application/octet-stream' >> "$TMP"
printf $'\r\n\r\n' >> "$TMP"
cat ./photo.jpg >> "$TMP"
printf $'\r\n' >> "$TMP"
printf -- --%s--$'\r\n' "$BOUNDARY" >> "$TMP"
BODY_SHA=$(sha256sum "$TMP" | awk '{print $1}')
SIG=$(printf 'POST\n<接收路径>\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA" \
| openssl dgst -sha256 -hmac "$SECRET" -binary | xxd -p -c 256)
curl -i -X POST "https://<接收地址>?filename=photo.jpg" \
-H "Content-Type: multipart/form-data; boundary=$BOUNDARY" \
-H "X-Webhook-Timestamp: $TS" \
-H "X-Webhook-Nonce: $NONCE" \
-H "X-Webhook-Signature: sha256=$SIG" \
--data-binary @"$TMP"
rm -f "$TMP"
选择冲突策略
确定再次收到同名文件时的处理方式。在创建 Webhook 时选择;创建后也可以在同一界面中重新调整并选择 应用 来更改。
| 策略 | 行为 |
|---|---|
拒绝 | 如果已有同名文件,则不保存新收到的文件。 |
覆盖 | 用新收到的文件替换现有文件。 |
重命名 | 保留现有文件,将新收到的文件以其他名称保存。 |
指定文件名
上传文件的名称可通过以下两种方法之一指定。
- 查询参数:
?filename=report.json - HTTP 标头:
X-Webhook-Filename: report.json

保存到子文件夹
通过 Webhook 接收的文件会保存在创建 Webhook 的文件夹的正下方。如果要在文件名中附加子路径,将文件保存到该文件夹下的子文件夹中,请开启 Webhook 的 保存到子文件夹。
- 在 Webhook 列表中展开要设置的 Webhook。
- 在
保存到子文件夹中选择允许。 - 选择
应用。
文件名中指定以 Webhook 文件夹为基准的相对路径。不存在的文件夹会自动创建。
- 查询参数:
?filename=releases/1.0/a.zip - HTTP 标头:
X-Webhook-Filename: releases/1.0/a.zip
| 规则 | 说明 |
|---|---|
| 深度与长度 | 子文件夹最多 8 层,单个名称最长 255 字节。 |
| 不可使用的路径 | 包含 .. 的名称、以 / 开头或结尾的路径、反斜杠(\)以及以 . 开头的文件夹名称会被拒绝。 |
| 路径指定位置 | 子路径只能通过查询参数或标头指定。multipart/form-data 文件项名称中写入的文件夹不会被使用。 |
查看接收到的数据
外部发送的数据会以文件形式累积在文件夹中。打开文件夹即可查看接收记录。
暂停和删除 Webhook
- 可以在文件夹中暂停或删除 Webhook。将鼠标悬停在列表中的 Webhook 上,会出现
暂停、删除按钮。
- 在
账户设置的我的 Webhook选项卡中,可以一目了然地查看自己在哪些文件夹中设置了 Webhook。在此列表中也可以暂停或删除 Webhook。

可以这样使用
- 网站/页面监控:可以将 Zapier、n8n、Make 等工具定期截取的网站截图自动累积到文件夹中,以跟踪变更历史。
- 保存业务自动化产出物:将 RPA、自动化工具生成的报告、发票、PDF 等无需人工干预直接保存到文件夹中。
- 收集表单提交的附件:可以将 Google 表单、Typeform 等提交的附件自动汇集到一个文件夹中。
- 保存构建/部署产物:可以自动接收 CI/CD 流水线生成的构建产物或测试报告。