将文件和文件夹移到回收站或将其删除

您可以将 Google 云端硬盘文件和文件夹从“我的云端硬盘”和共享云端硬盘中移除。此操作有两种方法: “移至回收站”或“删除”

您可以将文件和文件夹移至回收站,然后恢复(移至回收站后的 30 天内)。删除文件和文件夹会将其从云端硬盘中永久移除。如果您一次性将多个文件或文件夹移入回收站、恢复或永久删除,可能需要一段时间才会注意到相应更改。

本指南介绍了如何处理云端硬盘中的文件。

垃圾艺术

如要移除云端硬盘文件,您可以将其移至回收站。回收站中的文件会在 30 天后自动删除。您可以在 30 天期限之前恢复回收站中的文件。

只有文件所有者可以将文件移至回收站,其他用户无法查看所有者回收站中的文件。如果您尝试将不属于自己的文件移至回收站,则会收到 insufficientFilePermissions 错误。如需了解详情,请参阅权限

如需验证您是文件所有者,请调用 files.get 方法,并将 fileIdfields 参数设置为布尔值 ownedByMe 字段。对于共享云端硬盘中的文件,系统不会填充 ownedByMe 字段,因为这些文件属于共享云端硬盘,而非个人用户。如需详细了解如何使用 fields 参数返回字段,请参阅返回文件的特定字段

如果您不是文件所有者,但仍想要回收站文件的副本,请执行以下操作之一:

  • 创建文件的副本。
  • 请与所有者联系,让其从回收站中还原此内容。

将文件移至回收站

如需将文件移到回收站,请使用 files.update 方法,并将 trashed 字段设置为 True。如需将共享云端硬盘文件移至回收站,您还必须将 supportsAllDrives 查询参数设置为 True。如需了解详情,请参阅实现共享云端硬盘支持

如果成功,响应正文将包含一个 files 资源实例。

以下代码示例展示了如何使用 fileId 将文件标记为回收站:

Python

body_value = {'trashed': True}

response = drive_service.files().update(fileId="FILE_ID", body=body_value).execute()

Node.js

const body_value = {
  'trashed': True
};

const response = await drive_service.files.update({
      fileId: 'FILE_ID',
      requestBody: body_value,
    });
    return response;

FILE_ID 替换为您要删除的文件的 fileId

确定移至回收站的文件的属性

将文件移入回收站后,您可以检索其他 files 属性。您可以使用 files.get 方法,并在 fields 参数中包含以下字段。如需了解详情,请参阅返回文件的特定字段

系统会为所有文件填充以下字段:

  • trashed:文件是否已被移入回收站,无论是明确删除还是从已放入回收站的父文件夹中。请注意,将 trashedfiles.update 方法搭配使用可设置文件的状态,而 files.get 方法则会检索文件的状态。
  • explicitlyTrashed:文件是否明确从父文件夹中移入回收站,而不是递归删除。

系统只会为位于共享云端硬盘的文件填充以下字段:

  • trashedTime:项被放入回收站的时间(采用 RFC 3339 日期时间格式)。如果您使用的是以前的 Drive API v2 版本,则此字段称为 trashedDate
  • trashingUser:如果文件已明确移至回收站,则是将其移至回收站的用户。

还原回收站中的文件

如需从回收站恢复文件,请使用 files.update 方法并将 trashed 字段设置为 False。如需恢复共享云端硬盘文件,您还必须将 supportsAllDrives 查询参数设置为 True。如需了解详情,请参阅实现共享云端硬盘支持

如果成功,响应正文将包含一个 files 资源实例。

以下代码示例展示了如何使用 fileId 将文件标记为“未回收站”:

Python

body_value = {'trashed': False}

response = drive_service.files().update(fileId="FILE_ID", body=body_value).execute()

Node.js

const body_value = {
  'trashed': False
};

const response = await drive_service.files.update({
      fileId: 'FILE_ID',
      requestBody: body_value,
    });
    return response;

FILE_ID 替换为要移除的文件的 fileId

清空回收站

您可以使用 files.emptyTrash 方法永久删除用户已移至回收站的所有云端硬盘文件。如需清空共享云端硬盘的回收站,您还必须将 driveId 查询参数设置为共享云端硬盘 ID。

如果成功,响应正文将包含一个空实例。

以下代码示例展示了如何使用 fileId 删除回收站中的所有文件:

Python

response = drive_service.files().emptyTrash().execute()

Node.js

 const response = await drive_service.files.emptyTrash({
    });
    return response;

删除

您可以永久删除云端硬盘文件,而不将其移至回收站。删除某个文件后,该文件的共享对象将失去对该文件的访问权限。如果您希望其他人保留对该文件的访问权限,可以在删除之前将所有权转移给其他人。

要删除共享云端硬盘文件,用户的父级文件夹必须具备 role=organizer。如果您要删除文件夹,则该用户拥有的所有后代也会被删除。如需了解详情,请参阅权限

如需永久删除用户拥有的文件而不将其移至回收站,请使用 files.delete 方法。如需删除共享云端硬盘文件,您还必须将 supportsAllDrives 查询参数设置为 True。如需了解详情,请参阅实现共享云端硬盘支持

如果成功,响应正文将包含一个空实例。

以下代码示例展示了如何使用 fileId 删除文件:

Python

response = drive_service.files().delete(fileId="FILE_ID").execute()

Node.js

 const response = await drive_service.files.delete({
      fileId: 'FILE_ID'
    });
    return response;

FILE_ID 替换为您要删除的文件的 fileId

权限

下表显示了执行每项操作所需的角色权限。如需查看角色以及每个角色允许的操作的完整列表,请参阅角色和权限

允许的操作 owner organizer fileOrganizer writer commenter reader
将文件和文件夹移至回收站
恢复回收站中的文件和文件夹
清空回收站
永久删除文件或文件夹
删除共享云端硬盘中的文件和文件夹 [*]

能力

files 资源包含一系列布尔值 capabilities 字段,用于指示是否可以对文件执行操作。

如需检查功能,请调用 files.get 方法,并将 fileIdfields 参数设置为 capabilities 字段。如需详细了解如何使用 fields 参数返回字段,请参阅返回文件的特定字段

系统会为所有文件填充以下字段:

  • capabilities.canTrash:当前用户是否可以将此文件移到回收站。
  • capabilities.canUntrash:当前用户是否可以从回收站恢复此文件。
  • capabilities.canDelete:当前用户是否可以删除此文件。
  • capabilities.canRemoveChildren:当前用户是否可以从此文件夹中移除子文件夹。如果内容不是文件夹,则此字段为 false。

系统只会为位于共享云端硬盘的文件填充以下字段:

  • capabilities.canTrashChildren:当前用户是否可以将此文件夹的子级放入回收站。如果内容不是文件夹,则此字段为 false。
  • capabilities.canDeleteChildren:当前用户是否可以删除此文件夹的子级。如果内容不是文件夹,则此字段为 false。

文件和文件夹限制

云端硬盘文件和文件夹以及共享云端硬盘文件夹存在一些存储空间限制。

一般来说,在达到内容数上限后,腾出更多空间的唯一方法是永久删除内容或使用其他账号。将文件移至回收站并不足以释放空间。

如需详细了解文件和文件夹限制,请参阅以下内容: