Arhn - архитектура программирования

Код Google Cloud Storage не работает

После того, как все было создано в 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

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

<?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();

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

28.05.2018
  • говорит об этой ошибке: Неустранимая ошибка: класс «Google\Cloud\Storage\StorageClient» не найден в C:\xamppnew\htdocs\googleupload\upload_gcs.php в строке 16 28.05.2018
  • Я уже поместил свой код в вышеприведенный тег вверху, который прокомментирован некоторым хэш-кодом. не могли бы вы проверить и помочь мне. 28.05.2018
  • Отформатируйте код так, чтобы он был читабелен. То что у вас там инструкция написана в интерпретаторе и я нигде не вижу строчку 16 28.05.2018
  • С кодом, который был приведен выше, я получаю фатальную ошибку с этим классом StorageClient 28.05.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..