2016-04-26 10 views
0

Ich bin völlig neu in Google Cloud Storage (seit ich Amazon S3 bis jetzt verwendet habe).Google Cloud Storage Datei Herunterladen über PHP

Ich möchte meine Webanwendung so einrichten, dass Benutzer Dateien direkt von Google Cloud Storage herunterladen können. Ich habe es bereits versucht, mit der Google Api PHP Client, aber habe keinen funktionierenden Code.

Ich habe eine Testdatei hochgeladen dem Namen „test.jpg“ zu meinen Eimer „Test-Eimer-46856“, die ich über signierte URL herunterladen möchten (so dass Benutzer nur zeitlich begrenzt Zugang haben), aber ich habe keine Ahnung, wie ich das anfangen soll.

Bitte helfen. Vielen Dank.

Antwort

-1

// Edit:

die perfekte Lösung gefunden. Hier ist der Link für alle anderen, die auch für diese Lösung suchen: https://gist.github.com/stetic/c97c94a10f9c6b591883

<?php 
/* 
* PHP Example for Google Storage Up- and Download 
* with Google APIs Client Library for PHP: 
* https://github.com/google/google-api-php-client 
*/ 

include("Google/Client.php"); 
include("Google/Service/Storage.php"); 

$serviceAccount  = "[email protected]"; 
$key_file  = "/path/to/keyfile.p12"; 
$bucket   = "my_bucket"; 
$file_name  = "test.txt"; 
$file_content  = "01101010 01110101 01110011 01110100 00100000 01100001 00100000 01110100 01100101 01110011 01110100"; 

$auth = new Google_Auth_AssertionCredentials(
        $serviceAccount, 
        array('https://www.googleapis.com/auth/devstorage.read_write'), 
        file_get_contents($key_file) 
        ); 

$client = new Google_Client(); 
$client->setAssertionCredentials($auth); 
$storageService = new Google_Service_Storage($client); 

/*** 
* Write file to Google Storage 
*/ 

try 
{ 
    $postbody = array( 
      'name' => $file_name, 
      'data' => $file_content, 
      'uploadType' => "media" 
      ); 
    $gsso = new Google_Service_Storage_StorageObject(); 
    $gsso->setName($file_name); 
    $result = $storageService->objects->insert($bucket, $gsso, $postbody); 
    print_r($result); 

}  
catch (Exception $e) 
{ 
    print $e->getMessage(); 
} 

/*** 
* Read file from Google Storage 
*/ 

try 
{ 
    $object = $storageService->objects->get($bucket, $file_name); 
    $request = new Google_Http_Request($object['mediaLink'], 'GET'); 
    $signed_request = $client->getAuth()->sign($request); 
    $http_request = $client->getIo()->makeRequest($signed_request); 
    echo $http_request->getResponseBody(); 
}  
catch (Exception $e) 
{ 
    print $e->getMessage(); 
} 
Verwandte Themen