未定义的属性:尝试将文件插入云端硬盘时Google_Http_Request::$id


Undefined property: Google_Http_Request::$id when trying to insert file into Drive

我正在尝试将用户提交的文件插入到以用户命名的特定文件夹中,使用yannisg的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);

这是修改后的示例脚本中运行良好的相同部分。我会使用它,但我似乎无法将其正确集成到我需要运行的另一个脚本中。雅尼斯的刷新令牌得到了照顾。

//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)。是因为第一个在班级里吗?

提前谢谢。

我解决了。这与推迟有关。在雅尼斯的剧本中,

$client->setDefer(true);

在前面的函数中声明,这意味着用于创建文件夹的语句与文件一起执行。难怪抢不到父母的身份证。将其移动到文件夹插入部分下方后,一切再次正常工作。

//folder insertion    
$client->setDefer(true);
$request = $service->files->insert($file); //file insertion