Я пытаюсь обновить проект с использованием возобновляемых загрузок, и мне удалось загрузить его в мое ведро с помощью клиентской стороны для обработки всех запросов PUT.
Одна из проблем, с которыми я сталкиваюсь, - это установка ACL насам объект.
Клиентская сторона .
Я попытался установить заголовок на PUT с обоими,
'x-goog-acl':'public-read' и 'acl': 'public-read'
Последний отлично работает на моей не возобновляемой загрузке, но я не на 100% использую ее для возобновляемой илиесли это даже имеет значение.
на стороне сервера
Я использую метод beginSignedUploadSession с облачным хранилищем Google для PHP Library
Я видел такие примеры.
$bucket->upload(
fopen('/data/file.txt', 'r'),
[
'predefinedAcl' => 'publicRead'
]
);
Итак, я попробовал ...
$url = $object->beginSignedUploadSession([
'predefinedAcl' => 'publicRead'
]);
Однако, глядя на документы, предопределенный параметр Acl, похоже, недля этого метода.
beginSignedUploadSession Параметры
Единственное, что я могу подумать попробоватьиспользует заголовки напрямую, например ..
$url = $object->beginSignedUploadSession([
'headers' => array('x-goog-acl' => 'public-read'),
'contentType' => $filetype
]);
Хотя это, похоже, также не работает с заголовками 'x-goog-acl' и 'acl'.
Итак, мой вопросКто-нибудь знает, как правильно установить ACL для объекта с помощью метода beginSignedUploadSession или есть ли обходной путь, если это невозможно напрямую?
Спасибо.
Обновление
Пока что единственный способ, которым я смог это сделать, - это отредактировать источник библиотеки.
Я жестко закодировал заголовок в google-cloud-php / Core / src / Upload / SignedUrlUploader.php с ..
'x-goog-acl' => 'public-read'
preview
Это, очевидно, ужасно, но работает дляменя пока.
Я все еще очень заинтересован в правильном пути или в том, почему заголовок не проходит через. Если я узнаю об этом позже, я обновлю этот пост.
Еще раз спасибо.