2016-11-06 3 views
2

Я пытаюсь настроить хранилище на платформе Google Cloud. Честно говоря, теперь я немного смущен тем, что делать.Вставка изображения в облачное хранилище Google с использованием php api

Я использую следующий код.

require_once("vendor/autoload.php"); 

use Google\Cloud\Storage\StorageClient; 

use Google\Cloud\Storage\StorageObject; 

use Google\Cloud\Storage; 

$projectId = 'YOUR_PROJECT_ID'; 

$storage = new StorageClient([ 
    'projectId' => 'xx', 
    'key'=> 'yy' 
]); 

$file_name = "imagename"; 

$obj = new StorageObject(); 

$obj->setName($file_name); 


    $storage->objects->insert(
     "kmapsimage", 
     $obj, 
     ['name' => $file_name, 'data' => file_get_contents("https://kmapst.blob.core.windows.net/images/kmap581b939a7a28c.jpeg"),'mimeType' => 'image/jpeg'] 
); 

При выполнении функции я получаю следующую ошибку.

Argument 1 passed to Google\Cloud\Storage\StorageObject::__construct() must implement interface Google\Cloud\Storage\Connection\ConnectionInterface, none given, called in /var/www/html/test_imageupload.php on line 35 and defined in /var/www/html/vendor/google/cloud/src/Storage/StorageObject.php on line 71 

Я просто хочу загрузить изображения в хранилище Google.

ответ

2

Документов показать simpler путь

Учитывая свой соответствующий код:

$storage = new StorageClient([ 
    'projectId' => 'xx', 
    'key'=> 'yy' 
]); 

// Использование метода загрузки кажется немного более простого

$bucket = $storage->bucket('bucket-name'); 
$file = fopen('path/to/file', 'r'); 
$object = $bucket->upload($file, ['name' => 'fileName']); 
2

Будьте уверены, что вы используете свои учетные данные, которые вы можете загрузить с GCP в jso n.

В заголовке я это:

putenv("GOOGLE_APPLICATION_CREDENTIALS=".$_SERVER['DOCUMENT_ROOT']."/uploads/my-fe1tyui28f4f.json"); 

require $_SERVER['DOCUMENT_ROOT'].'/uploads/php-docs-samples/storage/api/vendor/autoload.php'; 

use Google\Cloud\Storage\StorageClient; 

$storage = new StorageClient(); 

// Primera imagen...... 
$file = fopen($_SERVER['DOCUMENT_ROOT']."/uploads/".$filename."_200.jpg", 'r'); 
$bucket = $storage->bucket("my_bucket"); 
$object = $bucket->upload($file, ['name' => $dir."/".$filename."_200.jpg"]); 
$object = $bucket->object($dir."/".$filename."_200.jpg"); 
$object->update(['acl' => []], ['predefinedAcl' => 'PUBLICREAD']); 

Я надеюсь, что это помогает!