Appearance
头像上传接口文档
用于实现用户头像上传功能,支持POST请求方式。参数需根据后台“用户令牌校验”的启用规则灵活选择,file_upload(头像文件)为必填项,应用签名直接从后台获取,同时需满足文件格式及账号、应用状态等前置校验要求。
请求地址 POST
http
https://nobase.cn/api/user/new_avatar请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | form | string | ✅ 是 | 应用ID,填写从开发者中心获取的应用唯一标识 |
| file_upload | form | file | ✅ 是 | 头像文件,支持JPG、PNG、GIF、WebP格式,最大5MB |
| signature | form | string | ✅ 是 | 应用签名,直接从后台复制获取,无需手动生成 |
| token | form | string | ❌ 否 | 用户令牌,仅在以下场景需传递:后台启用“用户令牌校验”且不使用账号密码验证;需为登录成功后获取的有效令牌 |
| user | form | string | 条件必选 | 用户账号,仅在以下场景需填写:后台未启用“用户令牌校验”,或启用后仍选择账号密码验证;格式为纯数字(如手机号) |
| pass | form | string | 条件必选 | 用户密码,仅当user为必填时同步填写;需与用户账号绑定的密码一致,格式为字母数字组合(不可含中文) |
返回示例
成功响应(头像上传成功)
json
{
"code": 200,
"msg": "success",
"data": "头像上传成功!"
}失败响应(参数缺失/错误)
json
{
"code": 204,
"msg": "fail",
"data": "接口参数错误:user和pass为必填项"
}失败响应(文件格式/大小错误)
json
{
"code": 405,
"msg": "fail",
"data": "仅支持JPG、PNG、GIF、WebP格式的图片"
}失败响应(令牌/账号异常)
json
{
"code": 404,
"msg": "fail",
"data": "用户账号密码错误!"
}失败响应(上传权限限制)
json
{
"code": 405,
"msg": "fail",
"data": "开发者账号已逾期,请缴费之后重试!"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=上传成功;204=参数缺失/错误;404=账号/令牌异常;405=文件格式/大小错误/权限限制 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | string | 响应数据:返回操作结果提示或错误原因,如“头像上传成功!”“文件大小不能超过5MB” |
代码示例
javascript
// 1. 准备表单数据(未启用令牌校验,需传user和pass)
const formData = new FormData();
formData.append("appid", "your_app_id");
formData.append("signature", "signature_from_backend");
formData.append("user", "13800138000"); // 用户账号(纯数字)
formData.append("pass", "UserPass123"); // 用户密码
formData.append("file_upload", file); // 从文件选择框获取的文件对象
// 2. 发起POST请求
fetch("https://nobase.cn/api/user/new_avatar", {
method: "POST",
body: formData
})
.then(res => res.json())
.then(res => {
res.code === 200
? console.log("头像上传成功:", res.data)
: console.error("头像上传失败:", res.data);
})
.catch(err => console.error("请求异常:", err));javascript
// 1. 准备表单数据(启用令牌校验,传token,无需user/pass)
const formData = new FormData();
formData.append("appid", "your_app_id");
formData.append("signature", "signature_from_backend");
formData.append("token", "valid_user_token"); // 登录获取的有效令牌
formData.append("file_upload", file); // 从文件选择框获取的文件对象
// 2. 发起POST请求
fetch("https://nobase.cn/api/user/new_avatar", {
method: "POST",
body: formData
})
.then(res => res.json())
.then(res => {
res.code === 200
? console.log("头像上传成功:", res.data)
: console.error("头像上传失败:", res.data);
})
.catch(err => console.error("请求异常:", err));python
import requests
# 1. 准备文件和参数
files = {
'file_upload': open('avatar.png', 'rb') # 本地头像文件
}
data = {
"appid": "your_app_id",
"signature": "signature_from_backend",
"user": "13900139000",
"pass": "UserPass123"
}
# 2. 发起POST请求
url = "https://nobase.cn/api/user/new_avatar"
try:
res_data = requests.post(url, data=data, files=files, timeout=10).json()
print(f"结果:{res_data['data']}")
except requests.exceptions.RequestException as e:
print(f"请求异常:{str(e)}")python
import requests
# 1. 准备文件和参数
files = {
'file_upload': open('avatar.jpg', 'rb') # 本地头像文件
}
data = {
"appid": "your_app_id",
"signature": "signature_from_backend",
"token": "valid_user_token"
}
# 2. 发起POST请求
url = "https://nobase.cn/api/user/new_avatar"
try:
res_data = requests.post(url, data=data, files=files, timeout=10).json()
print(f"结果:{res_data['data']}")
except requests.exceptions.RequestException as e:
print(f"请求异常:{str(e)}")注意事项
- 参数选择规则
- 启用“用户令牌校验”:可二选一(仅传
token,或传user+pass),推荐仅传token以减少敏感信息传递; - 未启用“用户令牌校验”:必须传
user+pass,否则会返回参数错误。
- 启用“用户令牌校验”:可二选一(仅传
- 文件格式要求
仅支持JPG、PNG、GIF、WebP格式,文件大小不超过5MB,建议前端提前校验文件类型和大小(如通过accept="image/*"限制选择类型),避免上传失败。 - 文件上传方式
必须使用multipart/form-data格式提交(表单需设置enctype="multipart/form-data"),不可用普通表单或JSON格式传递文件。 - 权限与状态校验
接口会校验开发者账号是否逾期、应用是否正常(非审核/停用状态)、用户账号状态是否正常,异常时会返回对应提示,需提前确认相关配置正常。 - 安全提示
- 生产环境必须使用HTTPS协议,避免文件传输过程中被篡改;
- 头像上传成功后,建议前端主动刷新显示新头像(可通过用户信息接口重新获取头像URL);
- 优先推荐启用“用户令牌校验”,降低账号密码泄露风险。

