簡體   English   中英

嘗試將文件插入雲端硬盤時,未定義的屬性:Google_Http_Request :: $ id

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

我正在嘗試使用yannisg的Google上載程序作為基礎,並使用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)。 是因為第一個在班上嗎?

提前致謝。

我解決了 這與延期有關。 用yannisg的腳本,

$client->setDefer(true);

在較早的函數中聲明,這意味着用於創建文件夾的語句與文件一起執行。 難怪它無法抓住父母的身份證。 將其移動到文件夾插入部分下方之后,所有內容將再次正常運行。

//folder insertion    

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM