Google Drive SDK API:如何将文件从root移动到文件夹?

时间:2013-01-03 03:33:46

标签: google-drive-api

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

我试过这个,但它永远不会奏效!

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

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

请帮忙吗?

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

以下是使用PatchPHP client library将文件移至新文件夹的一步方法:

/**
 * 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();
  }
}

答案 2 :(得分:0)

我找到了解决方法

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

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

答案 3 :(得分:0)

我认为正确的方法是"文件:补丁"(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