Php-клиент google storage: невозможно создать объект с помощью posting на подписанный url

Мы используем метод signedUploadUrl Google \ Cloud \ Storage \ StorageObject в бэкэнде для генерации URL-адресов загрузки для наших клиентов на основе JS, чтобы иметь возможность загружать данные в эти URL-адреса без необходимости аутентификации.

Затем этот URL-адрес извлекается клиентами, которые, в свою очередь, начать возобновляемую загрузку создают объект хранилища с запросом POST для получения upload_id, а последующие запросы PUT будут добавлять к нему данные, используя этот upload_id в качестве фактора аутентификации.

Проблема, с которой мы сталкиваемся, заключается в том, что этот подписанный URL-адрес загрузки работает не так, как ожидалось: мы должны отправить ему метаданные POST (имя файла, тип содержимого), чтобы получить upload_id, но этот запрос не выполняется с помощью «SignatureDoesNotMatch».

Поскольку мы используем официальную клиентскую библиотеку PHP, мы не знаем, что может случиться, чтобы это не работало.

1
0
108
1

Ответы 1

Вы пытались отправить заголовок типа содержимого вместе с вашими последующими запросами PUT? Поскольку сгенерированный подписанный URL-адрес загрузки создается вместе с заголовком типа содержимого, последующие запросы PUT должны отправлять тот же заголовок.

Посмотрите здесь: Google-облако-PHP

options-> contentType: если вы указываете это значение, клиент должен предоставить этому HTTP-заголовку, установленному на то же значение.

Другие вопросы по теме