put(file, options)
put() 上传一个文件并返回新对象。
输入
对象的扩展名依次取自
filename、路径的文件名部分或 File 的名称。字节和普通 Blob 没有名称,因此上传它们时请传入 filename(例如 "data.json")。
在 Node.js 中,无法打开的路径会抛出普通的
Error(Cannot open file: <path>,原始错误位于 cause 中)。在浏览器中,传入路径会更早失败,抛出导入 node:fs 时的错误。请改用来自 <input type="file"> 的 File。选项
完整的服务器端规则请参见 Object Post。
结果
简单上传和分片上传
put() 根据文件大小选择上传流程:
每个文件必须至少 512 字节;更小的文件会以
FILE_TOO_SMALL 失败。规则或上传令牌的 max_size,或者你的存储配额,可能会降低 10 GiB 的上限。
分片上传的执行过程
- SDK 启动上传,服务器返回其分片限制(
max_size、max_parts)。 - 文件被拆分为大小为
min(max_size, max(16 MiB, ceil(size / max_parts)))字节的分片。一个分片通常为 16 MiB 或更大,但当服务器的max_size更小时,分片也会更小。 - 分片每次并发发送 6 个,这是服务器对进行中分片的限制。失败的分片会在
maxRetries范围内重试。 - 所有分片到达后,SDK 完成上传。
put()。
一个账户最多可以有 32 个未完成的分片上传(与 S3 网关共享);再多一个会以
TOO_MANY_OPEN_UPLOADS 失败。由于每个账户的分片每次并发发送 6 个,请一次只运行一个大文件上传。从浏览器上传
切勿将 API 密钥发送到浏览器。应由你的服务器生成一个短期有效的上传令牌,浏览器再使用该令牌上传。- 服务器
- 浏览器
put(),包括分片上传。其他任何方法都会以 403 UPLOAD_TOKEN_NOT_ALLOWED 失败。
uploadTokens.create(options)
令牌会固定其生成时使用的每一个选项。
它返回
{ token, expires_at, max_uses }。服务器端规则请参见 Upload Tokens。
uploadTokens.create() 是一个写操作,只有一次尝试:它永远不会被重试。
