按能力
上传文件
当客户端只有本地图片、视频、音频、PDF、表格或其他文件时,请使用平台文件上传流程。接口会返回临时上传地址和稳定的 public_url,客户端无需感知文件存储的具体实现。
#选择公网地址、上传或 Base64
| 现有输入 | 推荐方式 | 原因 |
|---|---|---|
| 已有公网 HTTPS 地址 | 直接发送地址 | 无需重复上传,请求体也最小。 |
| 设备上的本地文件 | 先上传,再发送 public_url | 适合大文件,并可在重试时复用。 |
| 小型内联图片,且模型明确支持 Base64 | 可以使用 Base64 | 仅在所选模型契约明确允许时使用。 |
#本地文件上传流程
- 1
读取当前上限
使用同一个 API Key,以应用该用户的专属上限。
GET /v1/media/upload-policy - 2
创建上传凭证
发送 kind、明确的 content_type 和精确字节数。
POST /v1/media/upload-policy - 3
上传文件
将所有返回的 fields 字段和文件一起 POST 到 upload_url。
multipart/form-data - 4
使用返回地址
将 public_url 放入模型支持的媒体字段。
public_url
create-policy.sh
curl https://www.aisplice.store/v1/media/upload-policy \
-H "Authorization: Bearer sk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "file",
"content_type": "application/pdf",
"size": 1048576
}'#将上传字段视为不透明数据
原样发送 fields 返回的每一个键值,不要重命名、过滤或缓存。上传凭证有效期很短,并绑定到唯一生成的文件路径。
browser.ts
const form = new FormData();
for (const [key, value] of Object.entries(policy.fields)) {
form.append(key, String(value));
}
form.append("file", file); // keep the file field last
const uploaded = await fetch(policy.upload_url, {
method: "POST",
body: form,
});
if (!uploaded.ok) throw new Error(await uploaded.text());
const modelInputUrl = policy.public_url;#文件类型与模型支持
上传成功不代表模型可以读取
上传接口可以保存 PDF、Excel、文本等通用文件,但只有模型请求契约声明了匹配的文件或地址字段时,模型才能读取。仅支持图片的模型不会因为表格具有公网地址就能读取它。
还是没解决?
把请求 ID 或报错信息发给我们,我们来查。