使用PHP和Drive API将文件上传到Google云端硬盘上的特定文件夹

时间:2013-01-28 16:16:15

标签: php google-drive-api

希望这是一个简单的...我想直接将文件上传到文件夹中。我有文件夹ID,我有这个代码完全上传根文件:

<?php
require_once 'get_access.php'; 

require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';

$folder_id = '<folder id>';

$client = new Google_Client();
$client->setClientId('<client_id>');
$client->setClientSecret('<client_secret>');
$client->setRedirectUri('<url>');
$client->setScopes(array('<scope>'));
$client->setAccessToken($access);
$client->setAccessType('offline');
$client->refreshToken($refreshToken);
$service = new Google_DriveService($client);

//Insert a file
$file = new Google_DriveFile();
$file->setTitle('My document 123');
$file->setDescription('A test document');
$file->setMimeType('text/plain');

$data = file_get_contents('document-2.txt');

$createdFile = $service->files->insert($file, array(
      'data' => $data,
      'mimeType' => 'text/plain',
    ));

echo '<pre>';
var_dump($createdFile);
echo '</pre>';

?>

我应该怎么做才能将此文件上传到用户驱动器上的特定文件夹?

由于

4 个答案:

答案 0 :(得分:7)

我猜这很疯狂,但谷歌又改变了API! ParentReference类现在是Google_Service_Drive_ParentReference

所以更新的代码是:

$parent = new Google_Service_Drive_ParentReference();
$parent->setId($folderId);
$file->setParents(array($parent));

答案 1 :(得分:5)

感谢您的回答。是的,这是解决方案,我之前在API中找到了它,但它没有用。

关键是Google更改了类名,但没有更新文档。 ParentReference类现在是Google_ParentReference()

与其他有关Google云端硬盘的文档存在类似问题。因此,工作代码是:

$parent = new Google_ParentReference();
$parent->setId($parentId);
$file->setParents(array($parent));

答案 2 :(得分:1)

假设$parentId包含目标文件夹的id,您应该在插入请求之前添加此代码:

$parent = new ParentReference();
$parent->setId($parentId);
$file->setParents(array($parent));

有关详细信息,请查看files.insert参考指南:

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

答案 3 :(得分:1)

很晚,但我到达此页面搜索解决方案,并且由于API更改为V3,程序也发生了变化。几个小时后我发现了它。

以新的方式,他们使它变得非常简单。

试试这个:

raw=TRUE