接口

获取token

地址:/getToken

请求方式:POST

请求参数:

  • appId:YbcKSAlou6UREvkwJmTx
  • appSecret:95NmdotNX939f4gk7vTd3cHkMd8LhBcSzPn50G8c

响应数据:

{
    "code":0,
    "msg":"操作成功",
    "data":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIiLCJpYXQiOjE3MDY1MDgwOTYsImV4cCI6MTcwNjUyMjQ5NiwiYXBwSWQiOiJMZ2lDQlFzbHA4TERmTnlXdWpNbyJ9.2sAq09kEpV7teYwqIa6CxRwzAQSVrv2TeMYy5A9NS_8"
}

上传初始化(秒传)

地址:/file/uploadInit

请求方式:POST

header参数:token

请求参数:

  • dirId:文件夹id
  • fileName:文件名
  • md5:文件md5

响应数据:

  • 正常上传:
{
    "code": 0,
    "data": {
        "upload": {
            //上传id,秒传时,不返回上传id
            "uploadId": "a0dacab1-7a04-4c5c-b751-46cea30ee974",
            //是否跳过上传,如果为true,说明秒传,不需要再调用上传文件接口,并且会返回文件id(fileId),如果为false,走正常上传流程
            "skip": false,
            //文件id
            "fileId": 0
        },
        //服务当前使用的上传服务,local本地文件服务,minio minio服务
        "fileServerType": "local"
    }
}
  • 秒传:
{
    "code": 0,
    "data": {
        "upload": {
            //上传id,秒传时,不返回上传id
            "uploadId": "",
            //是否跳过上传,如果为true,说明秒传,不需要再调用上传文件接口,并且会返回文件id(fileId),如果为false,走正常上传流程
            "skip": true,
            //文件id
            "fileId": 1747524994864275458
        },
        "fileServerType": "local"
    }
}

上传文件/分片

地址:/file/upload

请求方式:POST

header参数:token

请求参数:

  • file: 文件
  • chunkNumber: 当前分片编号
  • chunkTotal: 总分片数
  • fileName: 文件名
  • uploadId: 上传id,初始化接口获取到的上传id
  • dirId:文件夹id

响应数据:

  • 上传分片
{
  "code":0,
  "msg":"分片上传完成",
  "data":0
}
  • 合并完成
{
  "code":0,
  "msg":"合并完成",
  "data":"1745604715384700930"
}

创建文件夹

地址:/file/dirAdd

请求方式:POST

header参数:token

请求参数:

  • dirId:上级文件夹id
  • name:文件夹名称

响应数据:

{
    "code": 0,
    "msg": "操作成功"
}

文件/文件夹重命名

地址:/file/rename

请求方式:POST

header参数:token

请求参数:

  • id:文件id
  • name:文件/文件夹新名字

响应数据:

{
    "code": 0,
    "msg": "操作成功"
}

获取文件列表(分页)

地址:/file/list

请求方式:GET

header参数:token

请求参数:

  • dirId:所在文件夹id
  • pageNo:当前第几页,默认1
  • pageSize:每页数量,默认10

响应数据:

{
    "code": 0,
    "msg": "操作成功",
    "data": {
        "records": [
           {
                "id": "1750762969215533058",
                "name": "新建文件夹",
                "isDir": 1,
                "dirId": "0",
                "fileSize": "0",
                "duration": "0",
                "transStatus": 0,
                "createTime": "2024-01-26 06:09:54",
                "thumUrl": "",
                "fileType": 0
            },
            {
                "id": "1747889182539296769",
                "name": "6c26d76632e5b05779e3f2bc91e8aedf.m4v",
              	"isDir": 0,
                "dirId": "0",
                "fileSize": "60221473",
                "suffix": ".m4v",
                "md5": "a67c7577e464acf66a802a2dddf2ee39",
                "duration": "31",
                "transStatus": 1,
                "createTime": "2024-01-18 07:50:29",
                "fileUrl": "http://127.0.0.1:8918/files/515f4fa8-0f1e-47b3-9f04-b922c9ab0371.m4v",
                "fileTransUrls": [
                    "http://127.0.0.1:8918/trans/hls/a62aaf96-07d4-42fd-b5e2-bc86cc61e73d/video.m3u8"
                ],
                "thumUrl": "http://127.0.0.1:8918/thum/a67c7577e464acf66a802a2dddf2ee39/1.jpg"
            }
            
        ],
        "total": "32",
        "size": "10",
        "current": "1",
        "pages": "4"
    }
}

参数说明:

  • id:文件ID
  • name:文件名
  • isDir:是否文件名,0是文件,1是文件夹
  • dirId:所在文件夹id
  • fileSize:文件大小(B)
  • suffix:文件后缀
  • md5:文件md5
  • duration:视频为时长(秒),文档为转pdf后的页数,其他文件为0
  • transStatus:转码状态,0 正在转码,1 转码成功,2 部分转码成功,3 转码失败,4 不需要转码,5 不支持转码,6 取消转码
  • createTime:上传时间,格式:yyyy-MM-dd HH:mm:ss
  • fileUrl:原文件地址
  • fileTransUrls:转码后的文件列表(根据开启的转码模板数量而定)
  • thumUrl:文件封面地址

获取文件详情

地址:/file/detail/:id

请求方式:GET

header参数:token

响应数据:

{
  "code": 0,
  "msg": "操作成功",
  "data": {
    "id": "1759776044321124353",
    "name": "文件管理系统.pptx",
    "isDir": 0,
    "dirId": "0",
    "fileSize": "2659028",
    "suffix": ".pptx",
    "md5": "269059d792de04d14ce3354d76b9d617",
    "duration": "25",
    "transStatus": 1,
    "createTime": "2024-02-20 03:04:38",
    "previewUrl": "http://127.0.0.1:8918/trans/document/39f8d3fa-fcea-4a1b-aefc-f916eca0d559.pdf?st=gy7dPuGlh2Io4mIQ-eCPQQ&e=1709703848",
    "progressList": [
      {
        "id": "1759776044639891458",
        "fileTransId": "1759776224541978625",
        "progress": 100.0,
        "format": "pdf",
        "transStatus": 1,
        "startTime": "1708398278757",
        "endTime": "1708398321706",
        "previewUrl": "http://127.0.0.1:8918/trans/document/39f8d3fa-fcea-4a1b-aefc-f916eca0d559.pdf?st=gy7dPuGlh2Io4mIQ-eCPQQ&e=1709703848",
        "fileSize": "34518359"
      }
    ],
    "thumUrl": "http://127.0.0.1:8918/thum/269059d792de04d14ce3354d76b9d617/1.jpg?st=esCMdzh-HZeqA29W1fFUIA&e=1709703848",
    "fileType": 3,
    "pdfWatermark": "凌夕文件管理系统 2024-03-06 13:39:08"
  }
}

参数说明:

  • id:文件ID
  • name:文件名
  • isDir:是否文件夹,0不是,1是文件夹
  • dirId:文件所在文件夹id,最上层目录,为0
  • fileSize:文件大小(B)
  • suffix:文件后缀
  • md5:文件md5
  • duration:视频为时长(秒),文档为转pdf后的页数,其他文件为0
  • transStatus:转码状态,0 正在转码,1 转码成功,2 部分转码成功,3 转码失败,4 不需要转码,5 不支持转码,6 取消转码
  • createTime:上传时间,格式:yyyy-MM-dd HH:mm:ss
  • thumUrl:文件封面地址
  • fileType:文件大的类型,1为视频,2为文档
  • previewUrl:文件预览地址
  • pdfWatermark:pdf文件预览的水印内容,用element-plus实现页面水印
  • progressList:转码进度列表,转码中和部分转码成功才会有该值,其他情况不会有该值,如果是视频,可能会多个进度,文档就一个进度,如果多个进度,当前转码进度需要取平均值
    • id:转码进度id
    • fileTransId:转码后文件id
    • progress:转码进度
    • format:转码格式
    • transStatus:转码状态,0 正在转码,1 转码成功,2 部分转码成功,3 转码失败,4 不需要转码,5 不支持转码,6 取消转码
    • startTime:开始转码时间(时间戳,毫秒)
    • endTime:结束转码时间(时间戳,毫秒)
    • previewUrl:转码后的文件预览地址
    • fileSize:转码后的文件大小(B)

删除文件/文件夹

如果删除文件夹,文件夹下的文件和文件夹都会被删除

地址:/file/delete

请求方式:GET

header参数:token

请求参数:

  • id:文件/文件夹id

响应数据:

{
    "code": 0,
    "msg": "操作成功"
}

获取转码模板列表

地址:/transTemplate/list

请求方式:GET

header参数:token

请求参数:无

响应数据:

{
    "code": 0,
    "msg": "操作成功",
    "data": [
        {
            "id": 1746778020070301697,
            "name": "普清",
            "status": 0,
            "width": 0,
            "height": 1080,
            "format": "m3u8",
            "frameRate": 20,
            "bitRate": 2000,
            "codec": "h264",
            "audioCodec": "aac",
            "audioChannel": 2,
            "audioBitRate": 112,
            "audioSampleRate": 8000,
            "createTime": "2024-01-15 06:15:08"
        }
    ]
}

参数说明:

  • id:模板ID
  • name:模板名称
  • status:状态,是否开启转码,0 关闭,1 开启
  • width:分辨率(宽)
  • height:分辨率(高)
  • format:转码输出格式
  • frameRate:视频帧率
  • codec:视频编解码器
  • bitRate:视频比特率(码率)
  • audioBitRate:音频比特率(码率)
  • audioSampleRate:音频采样率
  • audioChannel:音频声道
  • audioCodec:音频编解码器

新增/更新转码模板

地址:/transTemplate/save

请求方式:POST

header参数:token

请求参数:

  • id:模板ID,新增时不要传该参数,是否有id参数是区分新增、更新操作
  • name:模板名称
  • width:分辨率(宽),如:1920
  • height:分辨率(高),如:1080
  • format:转码输出格式,可选:mp4、m3u8
  • frameRate:视频帧率,可选:15、20、25、30、40、50、60
  • codec:视频编解码器,可选:H264
  • bitRate:视频比特率(码率),可选:500、800、1200、2000、3000、5000、8000
  • audioBitRate:音频比特率(码率),可选:16、32、48、64、80、96、112、128、160、192、224、256、320、384、448、512
  • audioSampleRate:音频采样率,可选:8000、11025、12000、16000、22050、24000、32000、44100、48000、64000、88200、96000
  • audioChannel:音频声道,可选:1、2
  • audioCodec:音频编解码器,可选:aac
  • waterMarkId:水印模板id

响应数据:

{
    "code": 0,
    "msg": "操作成功"
}

关闭/开启转码模板

地址:/transTemplate/updateStatus

请求方式:POST

header参数:token

请求参数:

  • id:模板ID,新增时不要传该参数,是否有id参数是区分新增、更新操作
  • status:状态,是否开启转码,0 关闭,1 开启

响应数据:

  • 成功
{
    "code": 0,
    "msg": "操作成功"
}
  • 失败
{
    "code": 1007,
    "msg": "视频转码模板不存在"
}

删除转码模板

地址:/transTemplate/delete

请求方式:POST

header参数:token

请求参数:

  • id:模板ID

响应数据:

  • 成功
{
    "code": 0,
    "msg": "操作成功"
}

文件上传成功后缩略图列表

文件上传后,如果马上调用该接口,可能返回的列表是空的,因为生成缩略图需要时间,可能需要几秒钟,所以在显示缩略图列表选择页面,如果获取到的数据是空的,最好重试几次,直到获取到数据、或者超时给用户提示。

地址:/file/thumList

请求方式:GET

header参数:token

请求参数:

  • md5:文件md5

响应数据:

  • 成功
{
    "code": 0,
    "msg": "操作成功",
    "data": [
        {
            "id": 1747079912013021186,
            "fileUrl": "http://127.0.0.1:8918/thum/db94fba515e9c0dc7cb20dbf06bc410c/1.jpg",
            "duration": 1
        }
    ]
}

更新文件缩略图

地址:/file/updateFileThum

请求方式:POST

header参数:token

请求参数:

  • fileId:文件id
  • thumId:缩略图id

响应数据:

{
    "code": 0,
    "msg": "操作成功"
}

手动转码

地址:/file/manualTranscode

请求方式:POST

header参数:token

请求参数:

  • fileId:文件id

响应数据:

  • 成功
{
    "code": 0,
    "msg": "操作成功"
}
  • 失败
{
    "code": 1012,
    "msg": "该文件不支持转码"
}

转码列表

地址:/transProgress/list

请求方式:GET

header参数:token

请求参数:

  • pageNo:当前第几页,默认1
  • pageSize:每页数量,默认10

响应数据:

{
    "code": 0,
    "msg": "操作成功",
    "data": {
        "records": [
            {
                "id": "1749360770384216065",
                "fileId": "1749360770249998339",
                "fileTransId": "1749360775123779586",
                "progress": 100.0,
                "format": "pdf",
                "transStatus": 1,
                "startTime": "1705915083869",
                "endTime": "1705915085036",
                "fileName": "常用软件.xlsx",
                "createTime": "2024-01-22 09:18:03"
            }
            
        ],
        "total": "26",
        "size": "10",
        "current": "1",
        "pages": "3"
    }
}

参数说明:

  • id:转码ID
  • fileId:文件id
  • fileName:文件名
  • fileTransId:转码后的文件id
  • progress:转码进度,0-100
  • format:转码输出格式
  • transStatus:转码状态,0 正在转码,1 转码成功,3 转码失败
  • startTime:开始转码时间(时间戳)
  • endTime:完成转码时间(时间戳),进行中为0,如要计算进行中转码时长,使用当前时间进行计算
  • createTime:创建转码时间,创建转码时,不一定马上开始转码了,开始转码时间要看startTime