curl --request POST \
--url https://api.poyo.ai/api/common/upload/base64 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"base64_data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
}
'{
"success": true,
"code": 200,
"msg": "File uploaded successfully",
"data": {
"file_id": "da2611c99d3ce825bc9a5409378db8e4",
"file_name": "test-base64.png",
"original_name": "test-base64.png",
"file_size": 3242,
"mime_type": "image/png",
"upload_path": "temp/test-base64",
"file_url": "https://storage.poyo.ai/temp/test-base64/test-base64.png",
"download_url": "https://storage.poyo.ai/temp/test-base64/test-base64.png",
"upload_time": "2025-12-29T13:09:01.233635",
"expires_at": "2026-01-01T13:09:01.233635"
}
}文件管理
通过 Base64 上传文件
使用 Base64 编码数据或 Data URL 格式将文件上传到 PoYo AI
POST
/
api
/
common
/
upload
/
base64
curl --request POST \
--url https://api.poyo.ai/api/common/upload/base64 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"base64_data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
}
'{
"success": true,
"code": 200,
"msg": "File uploaded successfully",
"data": {
"file_id": "da2611c99d3ce825bc9a5409378db8e4",
"file_name": "test-base64.png",
"original_name": "test-base64.png",
"file_size": 3242,
"mime_type": "image/png",
"upload_path": "temp/test-base64",
"file_url": "https://storage.poyo.ai/temp/test-base64/test-base64.png",
"download_url": "https://storage.poyo.ai/temp/test-base64/test-base64.png",
"upload_time": "2025-12-29T13:09:01.233635",
"expires_at": "2026-01-01T13:09:01.233635"
}
}使用指南
- 该接口接收 Base64 编码的文件数据,并上传到 PoYo AI 存储
- 同时支持 Data URL 格式(带 MIME 类型前缀)和纯 Base64 字符串
- 适合上传应用中已经是 Base64 编码的文件,例如 canvas 绘图或客户端处理过的图片
- 文件可通过返回的 URL 立即访问,保留 72 小时
参数详情
-
Base64 数据格式:
-
Data URL 格式:
data:image/png;base64,iVBORw0KGgo...(推荐) -
纯 Base64 字符串:
iVBORw0KGgo...(不带 MIME 类型前缀) - Base64 字符串不得包含任何空白、换行符或格式字符
- 支持的文件格式:仅 JPEG、PNG、GIF、WebP
- 上传数量上限:每次请求 1 张图片
-
Data URL 格式:
-
存储配置:
-
所有文件在存储路径中都会自动加上
temp/前缀 -
如果指定
upload_path: "profile-images",实际路径为temp/profile-images - 文件在上传 72 小时后过期并自动删除
-
所有文件在存储路径中都会自动加上
-
文件命名:
-
如果未提供
file_name,系统会按以下格式生成唯一文件名:{timestamp}_{random}_{extension} -
自动生成的文件名示例:
20251229130857_a8B9cD2e.png
-
如果未提供
开发者说明
-
适合使用 Base64 上传的情况:
- 客户端生成的图片(canvas、截图)
- 应用中已经是 Base64 编码的图片
- 可以接受编码开销的中小尺寸图片
-
不适合使用 Base64 上传的情况:
- 大图片文件(Base64 编码会使体积增加约 33%)
- 存储在磁盘上的文件(改用文件流上传)
- 可通过 URL 获取的文件(改用 URL 上传)
- 确保 Base64 数据格式正确,不含任何换行或空格
- 如需持久保存,请在 72 小时过期前将文件下载到本地
速率限制与配额
- 速率限制:每个已认证用户、每个上传接口,在 60 秒固定窗口内最多 10 次请求
-
超出速率限制时,会收到
429 Too Many Requests错误 - 固定窗口从窗口内第一次请求开始计算,同一用户的 JWT 请求和 API Key 请求共享该窗口
- 使用指数退避重试逻辑处理速率限制错误
常见错误场景
- Base64 编码无效:提供的 Base64 字符串无法解码
-
Data URL 格式无效:Data URL 格式错误(例如缺少
data:前缀或;base64,分隔符) - 不支持的文件类型:解码后的文件不是支持的图片格式(JPEG、PNG、GIF、WebP)
- 文件数据无效:解码后的数据为空或已损坏
- 认证错误:Authorization 请求头中的 API Key 缺失或无效
授权
所有 API 接口都需要 Bearer Token 认证。
创建 API Key:登录 PoYo,进入 仪表盘 → API 密钥(poyo.ai/zh/dashboard/api-key),点击创建 Key。
在请求头中添加:
Authorization: Bearer YOUR_API_KEY
请求体
application/json
Base64 编码的文件数据。
支持两种格式:
-
Data URL 格式:
data:image/png;base64,iVBORw0KGgo... -
纯 Base64 字符串:
iVBORw0KGgo...(不带 MIME 类型前缀)
支持的格式:JPEG、PNG、GIF、WebP
注意:Base64 字符串中不能包含任何空白字符或换行符。
示例:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
自定义存储目录路径。
未指定时,系统会自动对文件分类。
注意:无论指定什么路径,所有文件都会以 temp/ 前缀存储。
示例:
"profile-images"
上传文件的自定义文件名。
未指定时,系统会按以下格式生成唯一文件名:{timestamp}_{random}_{extension}
自动生成的文件名示例:20251229130857_a8B9cD2e.png
示例:
"user-avatar.png"
响应
文件上传成功
上传是否成功
示例:
true
响应消息
示例:
"File uploaded successfully"
Show child attributes
Show child attributes