如何使用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
结果:一个奇怪的结果。它应该删除父文件,但这会删除文件夹中的子文件。
请帮忙吗?
答案 0 :(得分:5)
更简单的方法是使用patch将parents字段更新为新文件夹的id。
https://developers.google.com/drive/v2/reference/files/patch
答案 1 :(得分:1)
以下是使用Patch和PHP 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