上传文件

  • 接口地址: /api/fresns/editor/upload
  • 请求方式: POST
  • 请求格式: Form-data

header 可选参数:

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

body 参数:

参数名类型是否必传说明
typeNumberYES1.图片 / 2.视频 / 3.音频 / 4.文档
tableTypeNumberYES来源类型
tableNameStringYES来源表名
tableFieldStringYES来源字段名,默认为 id
tableIdStringNO来源表 UUID,存储时转换成真实 ID
如果来源表没有 UUID 字段,则代表是主键 ID
tableKeyStringNO来源表键名
modeNumberYES1.上传文件
2.上传文件信息
fileFileNO1.上传文件
fileInfoStringNO2.上传文件信息数组,以字符串传参压缩后的 Array 数组信息

返回结果:

成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "files": [
            {
                "fid": "files > uuid",
                "type": "files > file_type",
                "rankNum": "files > rank_num",
                "name": "files > file_name",
                "extension": "files > file_extension",
                "mime": "file_appends > file_mime",
                "size": "file_appends > file_size",
                "imageWidth": "file_appends > image_width",
                "imageHeight": "file_appends > image_height",
                "imageLong": "图片专用:file_appends > image_is_long",
                "imageDefaultUrl": "图片专用:images_bucket_domain + 文件 file_path 字段",
                "imageConfigUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_config",
                "imageAvatarUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_avatar",
                "imageRatioUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_ratio",
                "imageSquareUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_square",
                "imageBigUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_big",
                "videoTime": "视频专用:file_appends > video_time",
                "videoCover": "视频专用:videos_bucket_domain + 文件 video_cover 字段",
                "videoGif": "视频专用:videos_bucket_domain + 文件 video_gif 字段",
                "videoUrl": "视频专用:videos_bucket_domain + 文件 file_path 字段",
                "audioTime": "音频专用:file_appends > audio_time",
                "audioUrl": "音频专用:audios_bucket_domain + 文件 file_path 字段",
                "transcodingState": "音视频专用,存储到 file_appends > transcoding_state",
                "moreJson": {
                    // 扩展信息 file_appends > more_json
                }
            }
        ]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

失败

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

开发说明

  • 如果是私有模式,当过期后 members > expired_at,该接口不可请求。
  • 需要先判断成员主角色是否有权上传。如果主角色有过期时间,并且已经过期,则以继承角色权限为主;如果无继承角色(或者该继承 ID 找不到角色),则以配置表 default_role 键名键值的角色权限为准;如果配置表键值为空(或找不到角色),则当无权处理。
  • 上传文件,存储在 files 数据表
  • 前后台遇到上传文件时,均要先判断后台是否关联了存储插件。未关联提示:“未配置存储设置,请配置后再上传”。已关联,客户端决定上传模式。
  • 1.上传文件:直接上传文件给业务服务器,然后主程序转交给插件处理,由插件把相关信息存表,并且删除临时文件。
  • 2.上传文件信息:已自行上传文件,仅将文件信息传给业务服务器,存储到对应的表和字段中。
  • tableIdtableKey 二选一必填一个。
  • 无论哪种上传模式,上传完成后,均要返回文件信息。

参数 fileInfo 示例

[
    {
        "name": "存储到 files > file_name",
        "extension": "存储到 files > file_extension",
        "path": "存储到 files > file_path",
        "originalPath": "存储到 file_appends > file_original_path",
        "mime": "存储到 file_appends > file_mime",
        "size": "存储到 file_appends > file_size",
        "md5": "存储到 file_appends > file_md5",
        "sha1": "存储到 file_appends > file_sha1",
        "rankNum": "存储到 files > rank_num",
        "imageWidth": "图片专用,存储到 file_appends > image_width",
        "imageHeight": "图片专用,存储到 file_appends > image_height",
        "videoTime": "视频专用,存储到 file_appends > video_time",
        "videoCover": "视频专用,存储到 file_appends > video_cover",
        "videoGif": "视频专用,存储到 file_appends > video_gif",
        "audioTime": "音频专用,存储到 file_appends > audio_time",
        "transcodingState": "音视频专用,存储到 file_appends > transcoding_state",
        "moreJson": {
            // 扩展信息,存储到 file_appends > more_json
        }
    }
]

// 压缩后示例
[{"name":"示例视频.mp4","extension":"mp4","path":"/mores/rnyRI6uOmZYXC7cekMugMDqTHPh3C0SmigyXYRiT.mp4","originalPath":"","mime":"video/mp4","size":288239,"md5":"a3ce43c8d5ae96ff6cfc7d74e4e948d1","sha1":"db9978f2147b358828d7eb03e8dba21182afb243","rankNum":8,"imageWidth":0,"imageHeight":0,"videoTime":59,"videoCover":"/mores/rnyRI6uOmZYXC7cekMugMDqTHPh3C0SmigyXYRiT.jpg","audioTime":0,"videoGif":"/mores/rnyRI6uOmZYXC7cekMugMDqTHPh3C0SmigyXYRiT.gif","transcodingState":1,"moreJson":{}}]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

直接上传文件给业务服务器,文件临时存储位置

file_typetable_type说明路径
11其他/未知用途/temp_files/mores/
12配置类-系统配置图/temp_files/configs/system/
13配置类-运营配置图/temp_files/configs/operating/
14配置类-表情图/temp_files/configs/emojis/
15配置类-成员扩展图/temp_files/configs/member/
16成员头像图/temp_files/avatars/{YYYYMM}/{DD}/
17图片-会话/temp_files/images/dialogs/{YYYYMM}/{DD}/
18图片-帖子/temp_files/images/posts/{YYYYMM}/{DD}/
19图片-评论/temp_files/images/comments/{YYYYMM}/{DD}/
110图片-扩展内容/temp_files/images/extends/{YYYYMM}/{DD}/
111图片-插件/temp_files/images/plugins/{YYYYMM}/{DD}/
27视频-会话/temp_files/videos/dialogs/{YYYYMM}/{DD}/
28视频-帖子/temp_files/videos/posts/{YYYYMM}/{DD}/
29视频-评论/temp_files/videos/comments/{YYYYMM}/{DD}/
210视频-扩展内容/temp_files/videos/extends/{YYYYMM}/{DD}/
211视频-插件/temp_files/videos/plugins/{YYYYMM}/{DD}/
37音频-会话/temp_files/audios/dialogs/{YYYYMM}/{DD}/
38音频-帖子/temp_files/audios/posts/{YYYYMM}/{DD}/
39音频-评论/temp_files/audios/comments/{YYYYMM}/{DD}/
310音频-扩展内容/temp_files/audios/extends/{YYYYMM}/{DD}/
311音频-插件/temp_files/audios/plugins/{YYYYMM}/{DD}/
47文档-会话/temp_files/docs/dialogs/{YYYYMM}/{DD}/
48文档-帖子/temp_files/docs/posts/{YYYYMM}/{DD}/
49文档-评论/temp_files/docs/comments/{YYYYMM}/{DD}/
410文档-扩展内容/temp_files/docs/extends/{YYYYMM}/{DD}/
411文档-插件/temp_files/docs/plugins/{YYYYMM}/{DD}/