下载内容文件

  • 接口地址: /api/fresns/info/downloadFile
  • 请求方式: POST
  • 请求格式: JSON

header 可选参数:

参数名公开模式(是否必传)私有模式(是否必传)
uidYESYES
midYESYES
tokenYESYES

body 参数:

参数名类型是否必传说明
typeNumberYES1.帖子 / 2.评论 / 3.扩展内容
uuidStringYES类型 UUID
fidStringYES要下载的文件 UUID

返回结果:

成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "downloadUrl": "下载链接",
        "originalUrl": "原始文件下载链接"
    }
}
1
2
3
4
5
6
7
8

失败

{
    "code": "code_messages > code",
    "message": "code_messages > message"
}
1
2
3
4

开发说明

  • 需要验证文件是否属于对应的来源目标,比如文件是否属于该帖子。
  • 帖子附件需要判断帖子是否开启了权限功能 posts > is_allow
  • 需要判断文件类型是否开启了「防盗链」,如果开启,则按规则向插件索要下载链接。
  • originalUrl 参数拼接方式见下方,如果开启了「防盗链」,则是由插件提供。
    • 图片 images_bucket_domain + file_appends > file_original_path
    • 视频 videos_bucket_domain + file_appends > file_original_path
    • 音频 audios_bucket_domain + file_appends > file_original_path
    • 文档 docs_bucket_domain + file_appends > file_original_path
  • 如果帖子有阅读权限,则判断当前请求下载的成员本身和成员关联的任意角色是否在授权列表 post_allows 表。
  • 需要判断当前请求成员的主角色权限 download_file_count 设置值,计算近 24 小时内,下载次数是否达到了上限(该成员 file_logs 近 24 小时内的记录数量)。
  • 请求后,登记下载记录,记录在 file_logs 表。