2016-04-26 3 views
0

Я совершенно не знаком с облачным хранилищем Google (так как я использовал Amazon S3 до сих пор).Google Cloud Storage File Загрузить через PHP

Я хочу настроить свое веб-приложение, чтобы пользователи могли загружать файлы непосредственно из облачного хранилища Google. Я уже пробовал, используя Google Api PHP Client, но не получил функциональный код.

Я загрузил тестовый файл с именем «test.jpg» к моему ведру «тесты-ковшовые 46856», который я хочу, чтобы загрузить с помощью подписанного URL (так что пользователи имеют только время ограниченный доступ), но я понятия не имею, как это начать.

Пожалуйста, помогите. Благодарю.

ответ

-1

// Edit:

Найдено идеальное решение. Здесь ссылка для всех остальных, которые также ищут это решение: 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(); 
}