供其他服务通过 Bearer Token 认证上传文件(如 APK、ZIP 等)到指定目录
| 项目 | 值 |
|---|---|
| 接口地址 | POST /api/external/upload |
| 认证方式 | Bearer Token |
| 内容类型 | multipart/form-data |
请求头中携带 Authorization,格式为:
Authorization: Bearer <your_token>
config.yaml 文件中配置,字段为 auth.upload_api_token
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
file |
file | 是 | 要上传的文件(如 .apk、.zip 等) |
target_path |
string | 否 | 目标目录路径(如 apks、releases),不填则上传到根目录 |
{
"code": 0,
"message": "上传成功",
"data": {
"file_name": "app-release.apk",
"file_size": 52428800,
"file_size_str": "50.00 MB",
"file_path": "apks/app-release.apk",
"download_url": "http://your-server/files/apks/app-release.apk"
}
}
{
"code": 401,
"message": "Token无效"
}
curl -X POST "http://your-server:18080/api/external/upload" \ -H "Authorization: Bearer ext_upload_token_2025_secure" \ -F "file=@/path/to/app-release.apk" \ -F "target_path=apks"
curl -X POST "http://your-server:18080/api/external/upload" \ -H "Authorization: Bearer ext_upload_token_2025_secure" \ -F "file=@/path/to/myfile.zip"
curl -v -X POST "http://your-server:18080/api/external/upload" \ -H "Authorization: Bearer ext_upload_token_2025_secure" \ -F "file=@/path/to/app.apk" \ -F "target_path=apks/v2.0"
curl -X POST "http://your-server:18080/api/external/upload" ^ -H "Authorization: Bearer ext_upload_token_2025_secure" ^ -F "file=@C:\builds\app-release.apk" ^ -F "target_path=apks"
$headers = @{ "Authorization" = "Bearer ext_upload_token_2025_secure" }
$form = @{
file = Get-Item "C:\builds\app-release.apk"
target_path = "apks"
}
Invoke-RestMethod -Uri "http://your-server:18080/api/external/upload" `
-Method Post -Headers $headers -Form $form
import requests
url = "http://your-server:18080/api/external/upload"
headers = {"Authorization": "Bearer ext_upload_token_2025_secure"}
with open("/path/to/app.apk", "rb") as f:
files = {"file": f}
data = {"target_path": "apks"}
resp = requests.post(url, headers=headers, files=files, data=data)
print(resp.json())
| 错误码 | 说明 |
|---|---|
0 |
成功 |
400 |
请求参数错误(文件太大、路径非法等) |
401 |
认证失败(缺少 Token 或 Token 无效) |
405 |
请求方法不允许(仅支持 POST) |
500 |
服务器内部错误 |
在 config.yaml 中配置 Bearer Token:
auth: # 外部上传API Token(Bearer Token认证,用于其他服务上传文件) upload_api_token: "ext_upload_token_2025_secure"
供其他服务通过 Bearer Token 认证删除指定文件或文件夹,支持通配符模糊匹配
| 项目 | 值 |
|---|---|
| 接口地址 | POST /api/external/delete |
| 认证方式 | Bearer Token(与上传接口相同) |
| 内容类型 | application/json |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | 是 | 目标文件夹路径(如 apks、releases/v2) |
filename |
string | 否 | 文件名,支持通配符(如 *.apk、app*、v?.zip)。不填则删除整个文件夹 |
只传 path,不传 filename → 删除该文件夹及其所有内容
传 path + 精确 filename → 删除该目录下的指定文件。文件不存在返回 404
传 path + 含通配符的 filename(如 *.apk)→ 删除该目录下所有匹配的文件。无匹配返回 404
* 匹配任意字符序列,? 匹配单个字符,[abc] 匹配括号内任意字符
{
"code": 0,
"message": "删除成功",
"data": {
"deleted_path": "apks/old_version",
"type": "folder"
}
}
{
"code": 0,
"message": "删除成功",
"data": {
"deleted_path": "apks/app-v1.0.apk",
"type": "file"
}
}
{
"code": 0,
"message": "删除成功",
"data": {
"deleted_files": ["app1.apk", "app2.apk", "app3.apk"],
"deleted_count": 3,
"pattern": "*.apk",
"type": "pattern"
}
}
curl -X POST "http://your-server:18080/api/external/delete" \
-H "Authorization: Bearer ext_upload_token_2025_secure" \
-H "Content-Type: application/json" \
-d '{"path": "apks/old_version"}'
curl -X POST "http://your-server:18080/api/external/delete" \
-H "Authorization: Bearer ext_upload_token_2025_secure" \
-H "Content-Type: application/json" \
-d '{"path": "apks", "filename": "app-v1.0.apk"}'
curl -X POST "http://your-server:18080/api/external/delete" \
-H "Authorization: Bearer ext_upload_token_2025_secure" \
-H "Content-Type: application/json" \
-d '{"path": "apks", "filename": "*.apk"}'
curl -X POST "http://your-server:18080/api/external/delete" \
-H "Authorization: Bearer ext_upload_token_2025_secure" \
-H "Content-Type: application/json" \
-d '{"path": "releases", "filename": "app_v2*"}'
curl -X POST "http://your-server:18080/api/external/delete" ^
-H "Authorization: Bearer ext_upload_token_2025_secure" ^
-H "Content-Type: application/json" ^
-d "{\"path\": \"apks\", \"filename\": \"*.apk\"}"
import requests
url = "http://your-server:18080/api/external/delete"
headers = {
"Authorization": "Bearer ext_upload_token_2025_secure",
"Content-Type": "application/json"
}
# 删除所有apk文件
resp = requests.post(url, headers=headers, json={
"path": "apks",
"filename": "*.apk"
})
print(resp.json())