功能描述
用于完成上传文件。
接口说明
要求权限:
非 acl 鉴权:admin、space_admin、upload_file、upload_file_force 或 confirm_upload。
acl 鉴权:canUpload(当前文件夹可上传)
在表单上传完成后,请务必及时调用该接口,否则文件将不能被正确存储。
如果调用该接口时实际并未完成文件上传,将返回错误信息。
请求
请求示例
POST /api/v1/file/
{LibraryId}
/{SpaceId}
/{ConfirmKey}
?confirm&conflict_resolution_strategy={ConflictResolutionStrategy}
&access_token={AccessToken}
&user_id={UserId}
请求参数:
LibraryId: 媒体库 ID,必选参数。
SpaceId: 空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(
-
);如果媒体库为多租户模式,则必须指定该参数。ConfirmKey: 确认参数,必选参数,指定为开始上传文件时响应体中的 confirmKey 字段的值。
ConflictResolutionStrategy: 文件名冲突时的处理方式。
ask: 冲突时返回 HTTP 409 Conflict 及 SameNameDirectoryOrFileExists 错误码。
rename: 冲突时自动重命名文件。
overwrite: 如果冲突目标为目录时返回 HTTP 409 Conflict 及 SameNameDirectoryOrFileExists 错误码,否则覆盖已有文件,默认为开始文件上传时指定的 ConflictResolutionStrategy。
AccessToken: 访问令牌,必选参数。
UserId: 用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份,详情请参阅 生成访问令牌接口,可选参数。
请求体
空或 application/json,可指定 crc64 用于校验上传正确性。
请求体示例:
{ "crc64": "xxx" }
请求体字段说明:
crc64: 文件的 CRC64-ECMA182 校验值,为了避免数字精度问题,这里为字符串格式,如果不指定则不做校验,如果校验失败则返回 HTTP 400 Bad Request 及 BadCrc64 错误码,必选参数。
响应
响应码
上传成功,返回 HTTP 200 OK。
响应体
application/json
响应体示例:
{"path": [ "foo", "bar", "file (1).docx" ],"name": "file (1).docx","type": "file","creationTime": "2020-09-22T07:44:45.000Z","modificationTime": "2021-02-01T08:21:47.000Z","contentType": "image/jpg","size": "1048576","eTag": "xxx","crc64": "xxx","metaData": {"x-smh-meta-foo": "bar"}}
响应体字段说明:
path: 字符串数组 或 null,如果是字符串数组则表示最终的文件路径,数组中的最后一个元素代表最终的文件名,其他元素代表每一级目录名,因为可能存在同名文件自动重命名,所以这里的最终路径可能不等同于开始上传时指定的路径;如果是 null 则表示该文件所在的目录或其某个父级目录已被删除,该文件已经无法访问。
name: 最终文件名。
type: 文件类型。
creationTime: 文件首次完成上传的时间。
modificationTime: 文件最近一次被覆盖的时间。
contentType: 媒体类型。
size: 文件大小,为了避免数字精度问题,这里为字符串格式。
eTag: 文件 ETag。
crc64: 文件的 CRC64-ECMA182 校验值,为了避免数字精度问题,这里为字符串格式。
metaData: 元数据,如果没有元数据则不存在该字段。