本文档描述网盘与相册服务(开发者版)的文件历史版本功能,您可以通过PDS提供的默认客户端使用历史版本功能,也可以参考该文档调用API实现文件历史版本的管理。
基本概念
功能介绍
该功能开启后,支持文件多版本备份,可以安全地保存文件及其历史版本,即使文件被覆盖或者错误修改,也可以轻松恢复文件的历史版本。
编辑或覆盖文件会产生历史版本,支持列举、查看、恢复、删除历史版本,支持为历史版本设置标记信息。
支持配置版本保存期限(1-999天),或者设置不超期,支持进行周期内版本自动合并以避免产生过多历史版本。
支持配置版本保存个数(1-999个),并支持将最多50个版本设置为永久保留,永久保留的版本不会因超期或超过数量限制而被删除。
前提条件
已创建网盘与相册服务(开发者版)域。
该功能仅限超级管理员或网盘管理员开启。
开启历史版本
登录BasicUI,进入管理控制台。
在左侧导航栏选择
。打开历史版本开关。
历史版本配置
在历史版本右侧单击编辑可对历史版本配置进行修改。
功能 | 说明 |
合并文件历史版本 | 默认开启。文件在10分钟内的多次保存结果(如在线编辑保存、同步盘上传)将合并生成一个历史版本。取消勾选后,每次保存结果均生成一个历史版本(包含自动保存和手动保存)。 |
版本数量上限设置 |
|
版本存放期限设置 |
|
API 调用流程及示例
生成新版本
上传文件后,文件只有一个版本。覆盖上传文件后,文件会产生新版本。
覆盖上传的逻辑,可参考文件上传最佳实践中的相关描述。覆盖文件的基本逻辑是:在CreateFile - 创建文件或文件夹接口中,设置 file_id 为要覆盖的文件ID,其它流程和普通上传一致。
列举历史版本
调用ListRevision - 列举版本接口,获取单个文件的版本列表,支持分页。返回的版本列表,以产生的时间倒序排序,越近产生的版本,排序越靠前。
请求示例:
{
"drive_id":"testDriveId",
"file_id": "testFileId"
}
响应示例:
{
"items": [{
"domain_id": "testDomainId",
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId",
"revision_name": "history_version.xlsx",
"file_extension": "xlsx",
"size": 8493,
"revision_version": 2,
"keep_forever": false,
"revision_description": "",
"revision_create_reason": "overwrite",
"content_hash_name": "sha1",
"content_hash": "xxxxxx",
"crc64_hash": "xxxxxx",
"created_at": "2022-09-05T04:00:09.017Z",
"updated_at": "2022-09-05T04:00:09.017Z",
"creator_type": "User",
"creator_id": "testCreatorId",
"is_latest_version": true
}],
"next_marker": ""
}
名词解释:
请求参数drive_id,是个人空间或团队空间的ID。
请求参数file_id,是文件ID,不能是文件夹ID。
分页获取时,请求响应中的参数next_marker是下一页起始资源标识符,可设置为下一次请求的marker参数。当一次请求的响应参数next_marker为空时,表示已经获取到最后一页。
响应参数revision_version,表示版本编号,编号越小,产生的时间越早。
响应参数revision_create_reason,表示版本生成的方式,有效值包括:
"":新建
"overwrite":覆盖更新
"restore_rev":历史版本还原
响应参数is_latest_version,标识文件是否为最新版本。
响应参数revision_name,最新版本的名字,和文件保持一致;历史版本的名字,在历史版本生成时固定。
获取版本信息
调用GetRevision - 获取版本信息信息接口,可以获取单个版本的详情。与列举历史版本接口相比,获取版本信息接口的响应信息增加了下载地址。
请求示例:
{
"drive_id":"testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId"
}
返回示例:
{
"domain_id": "testDomainId",
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId",
"revision_name": "history_version.xlsx",
"file_extension": "xlsx",
"size": 8493,
"revision_version": 2,
"keep_forever": false,
"revision_description": "",
"revision_create_reason": "overwrite",
"content_hash_name": "sha1",
"content_hash": "xxxxxx",
"crc64_hash": "xxxxxx",
"created_at": "2022-09-05T04:00:09.017Z",
"updated_at": "2022-09-05T04:00:09.017Z",
"creator_type": "User",
"creator_id": "testCreatorId",
"is_latest_version": true,
"download_url": "testDownloadUrl"
}
更新版本信息
调用UpdateRevision - 更新版本信息接口,可以设置版本的属性。
设置永久保留某个版本
支持将最多50个版本设置为永久保留,永久保留的版本不会因超期或超过数量限制而被删除。
永久保留的版本,可以通过删除历史版本删除。
永久保留的版本,在彻底删除文件时会被删除。
请求示例:
{
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId",
"keep_forever": true
}
取消永久保留某个版本
请求示例:
{
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId",
"keep_forever": false
}
设置版本的描述信息
请求示例:
{
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId",
"revision_description": "this is a revision"
}
还原历史版本
该接口不支持还原文件的最新版本。
还原版本时,以一个历史版本来生成一个新版本,历史版本状态不变,新版本的创建者为还原历史版本的操作者。如果需要清理历史版本以释放其占用的空间,需要主动调用DeleteRevision - 删除历史版本接口。
调用RestoreRevision - 还原历史版本接口,可以将一个历史版本还原为文件的最新版本。
请求示例:
{
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId"
}
删除历史版本
该接口不支持删除文件的最新版本。
调用DeleteRevision - 删除历史版本接口,可以删除一个历史版本,释放其占用的空间。
请求示例:
{
"drive_id": "testDriveId",
"file_id": "testFileId",
"revision_id": "testRevisionId"
}