[英]Upload Files In Folders Using Google Drive API
我目前有以下代码可以成功地将文件上传到根目录中的谷歌驱动器。 我将如何更改以下代码,以便如果$folderName
存在,它会上传该文件夹下的文件,但如果$folderName
不存在,它会创建文件夹,将其命名为$folderName
,然后在其下添加文件。
function uploadFiles($filePath, $fileName, $folderName) {
$file = new Google_Service_Drive_DriveFile();
$file->setName($fileName);
$file->setDescription('A test document');
$data = file_get_contents($filePath);
$createdFile = $this->service->files->create($file, array(
'data' => $data,
'uploadType' => 'multipart'
));
}
我相信你的目标和情况如下。
在这种情况下,首先需要确认特定文件夹是否存在。 所以在这种情况下,使用驱动器API中的“文件:列表”的方法。 所以修改后的脚本流程如下。
function uploadFiles($filePath, $fileName, $folderName) {
// 1. Search the existing folder using the folder name.
$res = $this->service->files->listFiles(array("q" => "name='{$folderName}' and trashed=false"));
$folderId = '';
if (count($res->getFiles()) == 0) {
// 2. When the folder of the folder name is NOT existing, the folder is created by the folder name and the folder ID of the created folder is returned.
$file = new Google_Service_Drive_DriveFile();
$file->setName($folderName);
$file->setMimeType('application/vnd.google-apps.folder');
$createdFolder = $this->service->files->create($file);
$folderId = $createdFolder->getId();
} else {
// 3. When the folder of the folder name is existing, the folder ID is returned.
$folderId = $res->getFiles()[0]->getId();
}
// 4. The file is uploaded to the folder using the folder ID.
$file = new Google_Service_Drive_DriveFile();
$file->setName($fileName);
$file->setDescription('A test document');
$file->setParents(array($folderId));
$data = file_get_contents($filePath);
$createdFile = $this->service->files->create($file, array(
'data' => $data,
'uploadType' => 'multipart'
));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.