← 返回文件管理

外部上传 API 文档

供其他服务通过 Bearer Token 认证上传文件(如 APK、ZIP 等)到指定目录

接口信息

项目
接口地址 POST /api/external/upload
认证方式 Bearer Token
内容类型 multipart/form-data

认证说明

请求头中携带 Authorization,格式为:

Authorization: Bearer <your_token>
Token 在服务器 config.yaml 文件中配置,字段为 auth.upload_api_token

请求参数

参数名 类型 必填 说明
file file 要上传的文件(如 .apk、.zip 等)
target_path string 目标目录路径(如 apksreleases),不填则上传到根目录

响应格式

成功响应

{
    "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 使用示例

1. 上传 APK 文件到指定目录

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"

2. 上传文件到根目录

curl -X POST "http://your-server:18080/api/external/upload" \
  -H "Authorization: Bearer ext_upload_token_2025_secure" \
  -F "file=@/path/to/myfile.zip"

3. 上传并查看详细响应

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"

4. Windows CMD 示例

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"

5. PowerShell 示例

$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

6. Python 示例

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"
请在生产环境中修改为更安全的 Token 值,并妥善保管。
上传的文件可通过文件管理系统的 Web 界面查看和管理。

外部删除 API 文档

供其他服务通过 Bearer Token 认证删除指定文件或文件夹,支持通配符模糊匹配

接口信息

项目
接口地址 POST /api/external/delete
认证方式 Bearer Token(与上传接口相同)
内容类型 application/json

请求参数(JSON Body)

参数名 类型 必填 说明
path string 目标文件夹路径(如 apksreleases/v2
filename string 文件名,支持通配符(如 *.apkapp*v?.zip)。不填则删除整个文件夹

三种删除模式

模式1:删除整个文件夹

只传 path,不传 filename → 删除该文件夹及其所有内容

模式2:删除指定文件

path + 精确 filename → 删除该目录下的指定文件。文件不存在返回 404

模式3:通配符匹配删除

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 使用示例

1. 删除整个文件夹

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"}'

2. 删除指定文件

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"}'

3. 通配符删除所有 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"}'

4. 通配符删除指定前缀文件

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*"}'

5. Windows CMD 示例

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\"}"

6. Python 示例

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())
删除操作不可恢复,请谨慎使用。建议在调用前确认目标路径和文件名。