0
我想插入一个用户提交的文件到用户命名的特定文件夹,使用yannisg's Google Uploader为基础,谷歌驱动器实例的改进版本时Google_Http_Request :: $ ID 。该文件夹在上传过程中创建。但是我得到了关于未定义id的上述错误。然后它将文件上传到Drive的根文件夹。我使用的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));
瓦尔倾销,第二脚本给我对象(Google_Service_Drive_DriveFile),而第一次给了对象(Google_Http_Request)。是因为第一个在课堂上吗?
在此先感谢。
如果'$ service'仍然来自原始的Google Drive API,则没有'insert'方法。创建文件的适当API是['create'](https://developers.google.com/drive/v3/reference/files/create)。响应对象将是包含'id'的[Files](https://developers.google.com/drive/v3/reference/files#resource)资源,您可以使用它来设置'$ parent-> setId' – adjuremods
@adjuremods我使用的是PHP客户端的V1主版本,而且也没有'create'方法。但是'insert'确实[有](https://developers.google.com/drive/v2/reference/files/insert)。抱歉,我错过了这些信息。将编辑以反映这一点。 – Hanany
我假定[PHP的API客户端](https://developers.google.com/api-client-library/php/start/get_started)将不支持旧版本的REST API,因为该库似乎支持v3的资源。你可以看看[这个回购](https://github.com/google/google-api-php-client/tree/v1-master),这似乎迎合了老版本的Drive API。希望这可以帮助! – adjuremods