2016-12-28 136 views
0

我上传从我的网站上的文件,它会上传到谷歌驱动器内的子文件夹通过谷歌驱动器API。一切工作正常。但我想在父文件夹内创建一个文件夹。我有父文件夹ID。但它不能在父文件夹内创建。它会在父文件夹之外创建文件夹。谷歌驱动器文件夹不创建内部父文件夹(按文件夹ID)

我试图与下面的代码:

 $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(); 
     } 
+0

检查这一点,http://stackoverflow.com/questions/30812325/google-drive-php-api-unable-to-insert-files-or-folders-into-subfolders –

+0

我想*** $ DriveFolderName ***缺失。 –

+0

@SoniVimal,号我试着用$ folder = new Google_Service_Drive_DriveFile(array('parents'=> array($ DriveFolderName)));.但它不起作用 – vel

回答

0

此代码的工作。

 $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(); 
     } 
0

应该

$folder = new Google_Service_Drive_DriveFile(array('parents' => array($ParentfolderId))); 

,而不是

$folder = new Google_Service_Drive_DriveFile(array('parents' => array($DriveFolderName))); 
+0

对不起。我试过了 。但它不起作用 – vel

相关问题