Я пытаюсь реализовать возможность для пользователя загрузить изображение. Я сохраню это изображение в Google Storage. Затем я буду использовать GoogleStorageTools, чтобы получить общедоступный URL-адрес для изображения, чтобы я мог отобразить его на своем сайте.
Мне нужно проверить это на локальном хосте, хотя. Когда я ранее использовал php5.5, я мог использовать dev_appserver.py, и это имитировало бы gs://
интеграции и позвольте мне создавать и взаимодействовать с файлами, как если бы я работал в облаке.
Тем не менее, я использую php7.2 для этого приложения, которое не может использовать dev_appserver.py, мне просто нужно запустить встроенный веб-сервер php. Когда я пытаюсь загрузить файл, я получаю сообщение об ошибке Google Storage. Это код в моем скрипте, который получает сообщение с загруженным файлом:
$storage = new StorageClient();
$storage->registerStreamWrapper();
$basefilename = uniqid().'-'.sanitize_string($_FILES['imagefile']['name']);
$gsfilepath = 'gs://#default#/images/'.$basefilename;
if ( ! move_uploaded_file($_FILES[ 'imagefile' ]['tmp_name'], $gsfilepath)) {
error_log('Failed to move uploaded file. ' . $_FILES[ 'imagefile' ]['tmp_name'] . ' => ' . $gsfilepath);
}
Это ошибки, которые я получаю, когда пытаюсь запустить move_uploaded_file()
код:
Google \ Cloud \ Core \ Exception \ NotFoundException: ошибка клиента:
POST
https://www.googleapis.com/upload/storage/v1/b//o?uploadType=resumable
привело к404 Not Found
ответ: не найден в
/Users/kenny/myproject/trunk/server/gae/vendor/google/cloud-core/src/RequestWrapper.php
по линии 263Неустранимая ошибка: Uncaught Google \ Cloud \ Core \ Exception \ NotFoundException:
Ошибка клиента:POST
https://www.googleapis.com/upload/storage/v1/b//o?uploadType=resumable
привело к404 Not Found
ответ: не найден в
/Users/kenny/myproject/trunk/server/gae/vendor/google/cloud-core/src/RequestWrapper.php
по линии 263Предупреждение: move_uploaded_file (): невозможно переместить
‘/ Частный / вар / папки / 1k / 8xt74j593ss9yxbtqrv925j40000gp / T / phpKsSN6q’
на «gs: //#default#/images/5c1be56fd752d-hold-on-to-your-butts.png» в
/Users/kenny/myproject/trunk/server/gae/testupload-upload.php на линии
11
Название ведра #default#
недопустимо в Оболочке Stream Storage Cloud. Как вы можете видеть из ошибки, в URI, на который публикуется библиотека, отсутствует Bucket ID.
Чтобы понять почему, обратитесь к StreamWrapper::openPath()
метод в google/cloud-storage
,
Название ковша представлено в виде host
ключ в parse_url
возвращаемое значение Как показано ниже, предоставляемый вами URI gs вызывает parse_url
терпеть неудачу:
php > $url = 'gs://#default/foo';
php > var_dump(parse_url($url));
bool(false)
Я предполагаю #default#
это помощник, который работает в определенных обстоятельствах. Попробуйте указать реальный идентификатор корзины в URI GS.
Других решений пока нет …