4

如何使用 Google Drive SDK API 将文件从根目录移动到文件夹?

我试过这个,但它从来没有工作!

1)将文件ID插入文件夹。
方法: https ://developers.google.com/drive/v2/reference/children/insert
结果:文件可以插入到文件夹中,但文件也显示在根目录中。

2)从父级删除文件ID。
方法: https ://developers.google.com/drive/v2/reference/parents/delete
结果:奇怪的结果。它应该删除父文件,但这删除了文件夹中的子文件。

请问有什么帮助吗?

4

4 回答 4

5

更简单的方法是使用 patch 将 parents 字段更新为新文件夹的 id。

https://developers.google.com/drive/v2/reference/files/patch

于 2013-03-19T02:17:08.297 回答
1

这是使用PatchPHP 客户端库将文件移动到新文件夹的一步方法:

/**
 * Move a file.
 *
 * @param Google_Service_Drive_DriveFile $service Drive API service instance.
 * @param string $fileId ID of the file to move.
 * @param string $newParentId Id of the folder to move to.
 * @return Google_Service_Drive_DriveFile The updated file. NULL is returned if an API error occurred.
 */
function moveFile($service, $fileId, $newParentId) {
  try {
    $file = new Google_Service_Drive_DriveFile();

    $parent = new Google_Service_Drive_ParentReference();
    $parent->setId($newParentId);

    $file->setParents(array($parent));

    $updatedFile = $service->files->patch($fileId, $file);

    return $updatedFile;
  } catch (Exception $e) {
    print "An error occurred: " . $e->getMessage();
  }
}
于 2014-07-15T10:56:50.440 回答
1

我认为正确的方法是“文件:补丁”(https://developers.google.com/drive/v2/reference/files/patch)。
您可以通过设置可选参数 addParents、removeParents 来移动文件。

如果我将“0B2H_JyuGzV0AQmpOTjdTNDZXM00”从“0B2H_JyuGzV0AZHFUUzE4cXh3aXM”移动到根文件夹,请执行此操作。

Request URL:https://content.googleapis.com/drive/v2/files/0B2H_JyuGzV0AQmpOTjdTNDZXM00?removeParents=0B2H_JyuGzV0AZHFUUzE4cXh3aXM&addParents=root&key=AIzaSyCFj15TpkchL4OUhLD1Q2zgxQnMb7v3XaM&alt=json
Request Method:PATCH
于 2015-01-13T13:41:33.893 回答
0

我找到了解决方法

1) 将原始文件复制到目标文件夹。
方法: https ://developers.google.com/drive/v2/reference/files/copy

2) 删除原始文件。
方法: https ://developers.google.com/drive/v2/reference/files/delete

于 2013-01-03T05:29:32.347 回答