我尝试将用户提交的文件插入以用户命名的特定文件夹中,使用yannisg's Google Uploader作为基础和修改后的Google云端硬盘示例。该文件夹是在上载过程中创建的。但我收到有关未定义ID的上述错误。然后它将文件上传到云端硬盘的根文件夹中。我正在使用PHP客户端的v1-master。
function upload(){
$client = $this->client;
$service = $this->service; //$service = new Google_Service_Drive($client);
//Create folder
$folder = new Google_Service_Drive_DriveFile(array(
'mimeType' => 'application/vnd.google-apps.folder'));
$folder->setTitle($this->ownerName); //applicant's name
$folderData = $service->files->insert($folder, array(
'fields' => 'id'));
//create file
$file = new Google_Service_Drive_DriveFile();
$file->title = $this->fileName;
$chunkSizeBytes = 1 * 1024 * 1024;
$fileRequest = $this->fileRequest;
$mimeType = $this->mimeType;
//Set parent id
$parent = new Google_Service_Drive_ParentReference();
$parent->setId($folderData->id);
$file->setParents(array($parent));
$request = $service->files->insert($file);
//The rest of the script...
}
我认为问题出在这里
$parent->setId($folderData->id);
这里的修改示例脚本中的相同部分运行良好。我会使用它,但我似乎无法将其正确地集成到我需要运行的另一个脚本中。并且yannisg已经处理了刷新令牌。
//Create folder
$folder = new Google_Service_Drive_DriveFile(array(
'mimeType' => 'application/vnd.google-apps.folder'));
$folder->setTitle($_FILES["uploaded"]["name"]); //applicant's name
$folderData = $service->files->insert($folder, array(
'fields' => 'id'));
var_dump($folderData);
//Create file
$file = new Google_Service_Drive_DriveFile();
$file->title = $_FILES["uploaded"]["name"];
$chunkSizeBytes = 1 * 1024 * 1024;
//Set parent id
$parent = new Google_Service_Drive_ParentReference(); //previously Google_ParentReference
$parent->setId($folderData->id);
$file->setParents(array($parent));
Var转储第二个脚本给出了对象(Google_Service_Drive_DriveFile),而第一个给出了对象(Google_Http_Request)。是因为第一个是在课堂上吗?
提前致谢。
答案 0 :(得分:0)
我解决了。这与推迟有关。在yannisg的剧本中,
$client->setDefer(true);
在较早的函数中声明,这意味着创建文件夹的语句与文件一起执行。难怪它无法抓住父母的身份。将其移动到文件夹插入部分下方后,一切都能正常工作。
//folder insertion
$client->setDefer(true);
$request = $service->files->insert($file); //file insertion