Google Cloud Storage Code не работает - PullRequest
0 голосов
/ 28 мая 2018

После того, как все было создано в Google Cloud, ниже был написан код для загрузки изображений с моего сервера в облако Google, но я получаю сообщение об ошибке с классом хранения Google

Мой код upload_gcs.php ниже

require 'vendor/autoload.php';

use Google\Cloud\Storage\StorageClient;
use Google\Cloud\Core\Exception\GoogleException;

if (isset($_FILES) && $_FILES['file']['error']== 0) {
$allowed = array ('png', 'jpg', 'gif', 'jpeg');
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array(strtolower ($ext), $allowed)) {
echo 'The file is not an image.';
die;
}

$projectId = 'photo-upload-205311';

$storage = new StorageClient ([
'projectId' => $projectId,
'keyFilePath' => 'Photo Upload-3af18f61531c.json'
]);

$bucketName = 'photo-upload-205311.appspot.com';
$bucket = $storage->bucket($bucketName);

$uploader = $bucket-> getResumableUploader (
fopen ($_FILES['file']['tmp_name'], 'r'),[
'name' => 'images/load_image.png',
'predefinedAcl' => 'publicRead',
]);

try {
$uploader-> upload ();
echo 'File Uploaded';
} catch (GoogleException $ex) {
$resumeUri = $uploader->getResumeUri();
$object = $uploader->resume($resumeUri);
echo 'No File Uploaded';
}
}
else {
echo 'No File Uploaded';
}

Ошибка, которую я получаю, ниже

> Warning: The use statement with non-compound name
> 'GoogleCloudStorageStorageClient' has no effect in upload_gcs.php on
> line 4
> 
> Fatal error: Class 'StorageClient' not found in upload_gcs.php on line
> 16

Мой процесс корректен или существуют другие способы выгрузки изображения с моего сервера в облачное хранилище Google.

1 Ответ

0 голосов
/ 28 мая 2018

Нужно использовать правильное пространство имен для скрипта, иначе оно неразрешимо.См. Исправление ниже.

<?php
require 'vendor/autoload.php';

use Google\Cloud\Storage\StorageClient;
use Google\Cloud\Core\Exception\GoogleException;

class GCPStorage {
    function __construct()
    {
        $projectId = '<your-project-id>';
        $bucketName = '<your-bucket-name>'; 
        $storage = new StorageClient([
            'projectId' => $projectId,
            'keyFilePath' => '<your-service-account-key-file>'
        ]);

        $this->bucket = $storage->bucket($bucketName);
    }

    function uploadToBucket()
    {
        if(/your-precondition/) {
            return 'No File Uploaded';
        }

        $uploadedFileLocation = $_FILES['file']['tmp_name'];
        $uploader = $this->bucket->getResumableUploader(
            fopen($uploadedFileLocation, 'r'),
            ['name' => 'images/file.txt', 'predefinedAcl' => 'publicRead']
        );
        try { 
            $object = $uploader->upload();
        } catch(GoogleException $ex) {
            $resumeUri = $uploader->getResumeUri();
            try {
                $object = $uploader->resume($resumeUri);
            } catch(GoogleException $ex) {
                return 'No File Uploaded';
            }
        } finally {
            return 'File Uploaded';
        }
    }
}

$gcpStorage = new GCPStorage;

echo $gcpStorage->uploadToBucket();

Небольшое предложение: утвердите свое предварительное условие как оговорку для охранника, вернувшись рано, когда оно потерпит неудачу.

...