2016-12-28 4 views
0

Я загружаю файлы с моего сайта, которые он будет загружать на диск Google в дочернюю папку с помощью API Google Диска. Все работает нормально. Но я хочу создать папку внутри родительской папки. У меня есть идентификатор родительской папки. Но он не может создать внутри родительской папки. Он создаст папку вне родительской папки.Папка каталога Google не создается внутри родительской папки (по идентификатору папки)

Я попытался с ниже код:

 $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 (массив ('parent' => 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