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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。