使用Google Drive API上传文件夹中的文件 修改点:修改后的脚本:参考文献:

问题描述

我目前拥有以下代码,可以成功将文件上传到根目录下的google drive中。我该如何更改以下代码,以便如果存在$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'
    ));
}

解决方法

我相信您的目标和情况如下。

  • 您要使用googleapis for php将文件上传到特定文件夹。
  • 当特定文件夹不存在时,您要创建该文件夹并将文件上传到该文件夹​​。
  • 当特定文件夹存在时,您要将文件上传到该文件夹​​。
  • 您已经能够使用Drive API将文件上传到Google云端硬盘。

修改点:

  • 在这种情况下,首先需要确认特定文件夹是否存在。因此,在这种情况下,将使用Drive API中的“文件:列表”方法。因此,修改后的脚本的流程如下。

    1. 使用文件夹名称搜索现有文件夹。
    2. 当文件夹名称的文件夹不存在时,将通过文件夹名称创建该文件夹,并返回创建的文件夹的文件夹ID。
      • 在这种情况下,使用“文件:创建”方法。
    3. 当文件夹名称的文件夹存在时,返回文件夹ID。
    4. 使用文件夹ID将文件上传到文件夹。

修改后的脚本:

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'
    ));
}

参考文献:

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...