2016-12-10 12 views
0

私はthis tutorialに従っていますが、すべて動作しています。名前とIDのリストが表示されます。GoogleドライブからAPI経由で画像を保存する

この画像をサーバーに保存しようとすると、保存されたファイルは空です。コマンドラインからこのスクリプトを実行します。

// Get the API client and construct the service object. 
$client = getClient(); 
$service = new Google_Service_Drive($client); 

// Print the names and IDs for up to 10 files. 
$optParams = array(
    'pageSize' => 1, 
    'fields' => 'nextPageToken, files(id, name)' 
); 
$results = $service->files->listFiles($optParams); 

if (count($results->getFiles()) == 0) { 
    print "No files found.\n"; 
} else { 
    print "Files:\n"; 
    foreach ($results->getFiles() as $file) { 
    printf("%s (%s)\n", $file->getName(), $file->getId()); 

    $fileIdr = $file->getId(); 
    } 
// $content = $service->files->export($fileIdr, 'image/jpeg', array('alt' => 'media')); 
    $content = $service->files->get($fileIdr, array('alt' => 'media')); 

    var_dump($content); 

    $zdjecie = '/home/bachus03/domains/bachus03.vot.pl/public_html/fb/public/test.jpg'; 
    file_put_contents($zdjecie, $content); 

答えて

0

ファイルの内容を取得するには、getDownloadUrl()関数でGoogleの例を使用します。 Source here

/* 
* 
* Print a file's metadata. 
* 
* @param Google_Service_Drive $service Drive API service instance. 
* @param string $fileId ID of the file to print metadata for. 
*/ 
function printFile($service, $fileId) { 
    try { 
    $file = $service->files->get($fileId); 

    print "Title: " . $file->getTitle(); 
    print "Description: " . $file->getDescription(); 
    print "MIME type: " . $file->getMimeType(); } catch (Exception $e) { 
    print "An error occurred: " . $e->getMessage(); 
    } 
} 

/* 
* 
* Download a file's content. 
* 
* @param Google_Service_Drive $service Drive API service instance. 
* @param File $file Drive File instance. 
* @return String The file's content if successful, null otherwise. 
*/ 
function downloadFile($service, $file) { 
    $downloadUrl = $file->getDownloadUrl(); 
    if ($downloadUrl) { 
    $request = new Google_Http_Request($downloadUrl, 'GET', null, null); 
    $httpRequest = $service->getClient()->getAuth()->authenticatedRequest($request); 
    if ($httpRequest->getResponseHttpCode() == 200) { 
     return $httpRequest->getResponseBody(); 
    } else { 
     // An error occurred. 
     return null; 
    } 
    } else { 
    // The file doesn't have any content stored on Drive. 
    return null; 
    } 
} 

EDIT:ファイルリソース参照を見て:https://developers.google.com/drive/v3/reference/files#resource あなたは私が考えるコンテンツを取得するためにwebContentLinkプロパティを使用することができます。

+0

ansverに感謝しますが、Googleドライブのapi v3 therはもうダウンロードしていません。instr theresはwebcontentlingですが、私はまだそれを動作させませんでした.. – user3544190

関連する問題