douxi0098 2016-12-28 12:32
浏览 45
已采纳

Google驱动器文件夹无法在父文件夹中创建(按文件夹ID)

I upload the files from my site it will upload to google drive inside the child folder via Google Drive API. Everything working fine. But I want to create a folder inside a parent folder. I have parent folder id. But it cannot create inside parent folder. It will create folder outside of parent folder.

I have tried with below code:

        $ParentfolderId="0Bxy_x723UM3tFFFSSSWWW";           

        $DriveFolderName = "foldername1";
        $folder_mime = "application/vnd.google-apps.folder";
        $folder_name = $DriveFolderName;
        $folder = new Google_Service_Drive_DriveFile(array('parents' => array( $ParentfolderId)));
        $folder->setTitle($folder_name);
        $folder->setDescription($GoogleDriveDesc); 
        $folder->setMimeType($folder_mime);             
        $newFolder = $service->files->insert($folder);
        $folderId  = $newFolder['id'];

        $file = new Google_Service_Drive_DriveFile();

        if ($folderId != null) {
            $parent = new Google_Service_Drive_ParentReference();
            $parent->setId($folderId);          
            $file->setParents(array($parent));
        } 
        try {
            $data = file_get_contents($filepath);           
            $file->title = $filename;       
            $chunkSizeBytes = 1 * 1024 * 1024;

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

            $media = new Google_Http_MediaFileUpload(
                  $client,
                  $request,
                  '',
                  null,
                  true,
                  $chunkSizeBytes
            );

            $media->setFileSize(filesize($filepath));
            $status = false;
            $handle = fopen($filepath, "rb");
            while (!$status && !feof($handle)) {
                $chunk = fread($handle, $chunkSizeBytes);
                $status = $media->nextChunk($chunk);
            }

            $result = false;
            if ($status != false) {
                $result = $status;
            }
            return $result;

        } catch (Exception $e) {
             print "An error occurred: " . $e->getMessage();
        }   
  • 写回答

2条回答 默认 最新

  • doulao5916 2016-12-31 06:47
    关注

    This code work for.

            $ParentfolderId="0Bxy_x723UM3tFFFSSSWWW";           
    
            $DriveFolderName = "foldername1";
            $folder_mime = "application/vnd.google-apps.folder";
            $folder_name = $DriveFolderName;
            $folder = new Google_Service_Drive_DriveFile(array('parents' => array( $ParentfolderId)));
            $folder->setTitle($folder_name);
            $folder->setDescription($GoogleDriveDesc); 
            $folder->setMimeType($folder_mime);     
    
            $parent = new Google_Service_Drive_ParentReference();
            $parent->setId($ParentfolderId);
            $folder->setParents(array($parent));
    
            $newFolder = $service->files->insert($folder);
            $folderId  = $newFolder['id'];
    
            $file = new Google_Service_Drive_DriveFile();
    
            if ($folderId != null) {
                $parent = new Google_Service_Drive_ParentReference();
                $parent->setId($folderId);          
                $file->setParents(array($parent));
            } 
            try {
                $data = file_get_contents($filepath);           
                $file->title = $filename;       
                $chunkSizeBytes = 1 * 1024 * 1024;
    
                $client->setDefer(true);
                $request = $service->files->insert($file);
    
                $media = new Google_Http_MediaFileUpload(
                      $client,
                      $request,
                      '',
                      null,
                      true,
                      $chunkSizeBytes
                );
    
                $media->setFileSize(filesize($filepath));
                $status = false;
                $handle = fopen($filepath, "rb");
                while (!$status && !feof($handle)) {
                    $chunk = fread($handle, $chunkSizeBytes);
                    $status = $media->nextChunk($chunk);
                }
    
                $result = false;
                if ($status != false) {
                    $result = $status;
                }
                return $result;
    
            } catch (Exception $e) {
                 print "An error occurred: " . $e->getMessage();
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?