Я не думаю, что даже возможно использовать такой метод в первую очередь, поскольку Облачное хранилище на самом деле не имеет каталогов, файловые объекты просто отображаются находиться в каталогах из-за символов '/'
в их именах, но они действительно находятся в единственном плоском пространстве имен, соответствующем целому сегменту.Из Особенности имен объектов :
Имена объектов находятся в плоском пространстве имен внутри сегмента, что означает, что разные сегменты могут иметь объекты с одинаковыми именами.Это также означает, что объекты не находятся в подкаталогах в сегменте.Например, вы можете назвать объект /europe/france/paris.jpg
, чтобы он выглядел , который paris.jpg
находится в подкаталоге /europe/france
, но для Cloud Storage объект просто существует в корзине и имеет имя /europe/france/paris.jpg
.
Правильные способы реализации контроля доступа в облачном хранилище описаны в Опции контроля доступа .
Для меня самый привлекательный способ загрузкина обложке, по-видимому, используются подписанные URL-адреса , что позволяет ограничивать доступ только к одному файлу / объекту и только в течение ограниченного времени, тем самым предотвращая загрузку нескольких файлов (что, по-видимому, является вашей проблемой), а такжеперезапись загруженного изображения после истечения этого ограниченного времени:
На этой странице представлен обзор подписанных URL-адресов, который представляет собой механизм аутентификации строки запроса для сегментов и объектов.Подписанные URL-адреса предоставляют возможность ограниченного по времени доступа для чтения или записи любому пользователю, владеющему URL-адресом, независимо от того, есть ли у него учетная запись Google.Чтобы узнать, как создать подписанный URL, прочитайте Создание подписанных URL с помощью gsutil и Создание подписанных URL с помощью программы .
Поскольку вы планируете это делатьиз вашего кода, второй подход из приведенной выше цитаты - это то, что вам нужно - по сути, сводится к отправке конкретного запроса POST на специально созданный URL.