跳转至

07. 资源上传与站点配置

1. 通用上传(JWT)

POST /api/upload/file

multipart/form-data 字段: - file:文件 - file_typeavatar / other / 自定义

返回示例:

{
  "code": 200,
  "message": "上传成功",
  "data": {
    "file_name": "avatar.jpg",
    "file_size": 53211,
    "file_type": "avatar",
    "minio_path": "uploads/avatar/2026/04/xxx.jpg",
    "file_url": "https://...",
    "thumbnail_url": "https://..."
  }
}

2. 操作证上传与查询(JWT)

POST /api/upload/operator-certificate

multipart/form-data 字段: - callsign(可选) - file(首次必传;后续可复用旧证图片)

返回示例:

{
  "code": 200,
  "message": "操作证信息已提交,请等待管理员审核",
  "data": {
    "id": 99,
    "file_name": "cert.pdf",
    "file_size": 124312,
    "upload_time": "2026-04-05 16:11:00"
  }
}

GET /api/operator-certificate

返回 active_cert(已通过)和 pending_cert(待审/拒绝最近一条)。

3. 站点 Logo/Favicon(Admin)

multipart/form-datafile

POST /api/upload/favicon

multipart/form-datafile

4. 资源中心(Admin)

管理端

  • GET /api/assets(管理员列表,参数 parent_id
  • POST /api/assets/folder
  • POST /api/assets/uploadmultipart/form-data: parent_id + file + name + remark
  • PUT /api/assets/:id
  • PUT /api/assets/:id/move
  • POST /api/assets/:id/replace
  • DELETE /api/assets/:id

示例:创建文件夹

{ "name": "客户端安装包", "parent_id": null, "remark": "发布目录" }

示例:移动资源

{ "target_parent_id": 12 }

前台公开下载

  • GET /api/assets/tree
  • GET /api/assets/folder/:id
  • GET /api/assets/:id/download

下载链接返回示例:

{
  "code": 200,
  "message": "获取成功",
  "data": {
    "name": "draarl-client.exe",
    "size": 51200321,
    "mime_type": "application/octet-stream",
    "download_url": "https://...presigned..."
  }
}

5. 站点配置接口

公开读取

  • GET /api/config/public

返回示例:

{
  "code": 200,
  "message": "获取成功",
  "data": {
    "icp": { "icp": "粤ICP备xxxx号" },
    "systemInfo": { "name": "DraARL", "logo_url": "https://...", "favicon_url": "https://..." },
    "sso_enabled": true,
    "sso_name": "Keycloak"
  }
}

已登录读取

  • GET /api/config/category/:category

管理员配置(Admin)

  • PUT /api/config
  • PUT /api/config/icp
  • PUT /api/config/system
  • PUT /api/config/aprs
  • PUT /api/config/openai
  • GET /api/config/all
  • GET /api/config/system
  • GET /api/config/aprs
  • GET /api/config/openai
  • GET /api/config/aprs/logs
  • DELETE /api/config/logo
  • DELETE /api/config/favicon
  • GET /api/config/smtp
  • PUT /api/config/smtp

SMTP 更新请求示例:

{
  "host": "smtp.qq.com",
  "port": 465,
  "use_ssl": true,
  "insecure_skip_verify": false,
  "sender_name": "DraARL",
  "sender_email": "noreply@example.com",
  "password": "授权码"
}