Не удается загрузить изображение из URI в Firebase Storage в PHP - PullRequest
0 голосов
/ 10 ноября 2019

Я на самом деле пытаюсь загрузить изображение из его URI в хранилище Firebase моего проекта.

Примечание 1. Кажется, что мой доступ к Firebase работает правильно, так как я могу писать и читать вмоя база данных Firestore, использующая тот же SDK. Я установил весь костюм, используя composer.

Примечание 2: Я не использую $ _FILES [] напрямую, так как редактирую свое изображение после того, как оно было выбрано. Следовательно, входные данные моего файла не совпадают с моим отредактированным изображением.

Примечание 3: При отправке обратно в файл формы URI отредактированного изображения прекрасно работает в теге.

1- ВМой файл формы:

<img class="rounded" id="header" src="images/header_placeholder.png" alt="header">
<input type="file" class="sr-only" id="header_input" name="header_img" accept="image/*">
<input id="header_img_url" name="header_img_url" type="hidden" value="">

Значение моего скрытого ввода переназначается с моим URI отредактированного изображения перед отправкой.

2- В моем загружаемом файле PHP (я забрал большую часть кода пожарного хранилища дляясность)

<?php 
require '../../vendor/autoload.php';
use Google\Cloud\Firestore\FirestoreClient;
use Google\Cloud\Core\GeoPoint;
use Google\Cloud\Storage\StorageClient;

function generateRandomString($length = 20) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

$db = new FirestoreClient([
        'projectId' => 'hotpot-XXXXX',
    ]);

# Instantiates a client
$storage = new StorageClient([
    'projectId' => 'hotpot-XXXXX',
]);

$bucket = $storage->bucket('gs://hotpot-XXXXX.appspot.com/');


    $headerImgID = generateRandomString();
    $iconeImgID = generateRandomString();

    $file = fopen($_POST['header_img_url'], 'r');

    $bucket->upload($file, [
        'name' => $headerImgID
    ]);

Мой скрипт на самом деле аварийно завершает работу при наличии строк загрузки:

    $bucket->upload($file, [
        'name' => $headerImgID
    ]);

Я надеюсь, что вы можете помочь мне найти, где я ошибаюсь, потому что я искал и пыталсямного, и все же я не могу это исправить: /

1 Ответ

1 голос
/ 10 ноября 2019

Хорошо, я неправильно понял, что такое «ведро» ... правильный путь - просто использовать hotpot-XXXXX.appspot.com без gs: //.

...