2016-12-28 135 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

相關問題