核心概念

媒体与文件

文件上传、下载和媒体处理

上传方式

Nexus AI 根据文件大小提供两种上传策略。

单次上传(< 5 MB)

适合头像、小附件等文件,使用 MediaService.UploadFile

curl -X POST https://api.nexus-dev.xsyphon.com/api.v1.MediaService/UploadFile \
  -H "Content-Type: application/json" \
  -H "Connect-Protocol-Version: 1" \
  -H "Authorization: Bearer nxa_..." \
  -d '{
    "fileName": "photo.jpg",
    "contentType": "image/jpeg",
    "purpose": "MEDIA_PURPOSE_MESSAGE",
    "data": "<base64-encoded-bytes>"
  }'

响应包含 MediaFileInfo,其中有 fileIdpublicUrl、尺寸和校验和。

分片上传(最大 100 MB)

适合视频、大文档等文件,使用三步流程:

步骤 1:初始化MediaService.InitUpload

{"fileName": "video.mp4", "contentType": "video/mp4", "size": 52428800}

返回 sessionId 用于后续分片上传。

步骤 2:上传分片MediaService.UploadChunk(按需重复)

{"sessionId": "upload_abc123", "chunk": "<base64-chunk>", "offset": 0}

步骤 3:完成上传MediaService.CompleteUpload

{"sessionId": "upload_abc123"}

返回包含最终 fileIdMediaFileInfo

下载

MediaService.GetDownloadURL 返回有时限的签名下载链接:

{"fileId": "file_abc123"}

响应:

{"url": "https://storage.example.com/...", "expiresAt": "1712000060000"}

通过 UploadFile 上传的头像类文件具有永久的公开 URL(MediaFileInfo 中的 publicUrl)。

媒体用途

用途说明
MEDIA_PURPOSE_AVATAR用户头像
MEDIA_PURPOSE_GROUP_AVATAR群头像
MEDIA_PURPOSE_MESSAGE消息附件

MediaFileInfo 字段

字段类型说明
fileIdstring文件唯一标识
fileNamestring原始文件名
contentTypestringMIME 类型
sizeint64文件大小(字节)
checksumstringSHA256 校验和
widthint32图片/视频宽度(如适用)
heightint32图片/视频高度(如适用)
durationMsint64音频/视频时长(如适用)
thumbnailFileIdstring缩略图文件 ID(如适用)
publicUrlstring永久公开 URL(仅头像)