上传
最后更新 2026年11月9日
浏览器和 App 用你的服务器签发的地址,直接上传到你的 upload 域名。地址里写定了文件放在哪里、最大多大、接受哪些类型以及何时过期。
| 参数 | 含义 |
|---|---|
exp |
过期时间,Unix 时间(秒,UTC) |
max_bytes |
允许的最大字节数 |
types |
接受的 Content-Type,小写,多个用 , 分隔,例如 image/png,image/jpeg |
用 PUT 把文件发到签名地址,带 Content-Type 和 Content-Length,不接受分块传输编码。binedge 按顺序检查:
- 签名、key 前缀和过期时间。
Content-Type(去掉;之后的参数)在types里。Content-Length不超过max_bytes。- 文件开头的字节与声明的类型一致。声明
image/png但不是 PNG 的文件会被拒绝。text/plain、application/octet-stream这类无法从内容识别的类型不做这项检查。
返回 200 且正文为空表示文件已存好。任一检查不通过,或正文没传完连接就断开,都不会留下文件。同一个 key 再次上传会覆盖原文件。单个请求最多 300 MB,更大的文件用分片续传。
分片续传(tus)
Section titled “分片续传(tus)”binedge 实现了 tus 1.0 的 creation 与 expiration 扩展,tus-js-client、TUSKit、tus-android-client 等客户端可以直接使用。把签名上传地址作为创建端点。
| 请求 | 行为 |
|---|---|
POST 签名地址 |
创建上传。带 Tus-Resumable: 1.0.0、Upload-Length(1 到 max_bytes),Upload-Metadata 里的 filetype 必须在 types 里。返回 201 和 Location |
HEAD Location |
返回 Upload-Offset、Upload-Length 和 Upload-Expires |
PATCH Location |
带 Content-Type: application/offset+octet-stream 和当前 Upload-Offset 发送下一段。返回 204 和新的偏移 |
- 分片大小取 8 MiB 的整数倍,建议 64 MiB。
- 只保存完整的 8 MiB 片。一次
PATCH在一片中间结束时,返回的Upload-Offset是最后一个完整片的末尾,客户端从那里重发。 - 上传在创建后 24 小时内可以续传,过期后未完成的部分会被清掉。
PATCH返回409时先HEAD读当前偏移,再从那里继续。
| HTTP | 含义 |
|---|---|
404 |
上传已过期或已不存在 |
409 |
Upload-Offset 与已保存的字节数不一致 |
412 |
缺少 Tus-Resumable,或不是 1.0.0 |
413 |
Upload-Length 超过 max_bytes,或正文超过 Upload-Length |
423 |
同一个上传正有另一个 PATCH 在写 |
upload 域名的所有响应都允许任意来源,并向脚本开放 tus 相关响应头(Location、Upload-Offset、Upload-Length、Upload-Expires、Tus-Resumable、Tus-Version、Tus-Extension)。凭据只在地址的签名里,上传不使用 cookie。
binedge 不会回调你的服务器。上传成功后由 App 告诉你的服务器,和其他上传一样,你的服务器保存这个 key。