Нет прямого способа получить последний загруженный объект из Google Cloud Storage. Однако существует обходной путь, использующий метаданные объекта.
Каждый объект, который он загружает в облачное хранилище Google, имеет разные метаданные. Для получения дополнительной информации вы можете посетить документацию Облачное хранилище> Метаданные объекта . Одна из метаданных - « Последнее обновление ». Это значение является отметкой времени последнего обновления объекта. Что может случиться только в 3 случаях:
A) Объект был загружен впервые.
B) Объект был загружен и заменен, поскольку он уже существует.
C) Метаданные объекта изменены.
Если вы не обновляете метаданные объекта, вы можете использовать эту работу вокруг:
- Установить переменную с очень старым объектом date_time (1900-01-01 00: 00: 00.000000). У объекта нет шансов получить эти метаданные обновления.
- Установить переменную для хранения имени последнего блоба и установить для него значение "NONE"
- Список всех BLOB-объектов в корзине Документация Google Cloud Storage
- Для каждого имени BLOB-объекта загрузить обновленные метаданные и преобразовать их в объект date_time
- Если метаданные обновления блоба больше уже имеющихся у вас, обновите их и сохраните текущее имя.
- Этот процесс будет продолжаться до тех пор, пока вы не выполните поиск по всем BLOB-объектам, и только переменная будет сохранена в переменных.
Я немного кодировал себя, и это мой пример кода GitHub , который работал для меня. Возьмите логику и измените ее в зависимости от ваших потребностей. Я бы также предложил протестировать его локально, а затем использовать в своем коде.
НО, если вы обновите метаданные BLOB-объекта вручную, это еще один обходной путь:
Если вы обновите какие-либо метаданные большого двоичного объекта, см. Эту документацию Просмотр и редактирование метаданных объекта , тогда отметка времени «Последнее обновление» этого большого двоичного объекта также будет обновлена, поэтому выполнение вышеуказанного метода НЕ БУДЕТ дать вам последний загруженный объект, но последний измененный, которые отличаются . Поэтому вы можете добавлять собственные метаданные к своему объекту каждый раз, когда вы загружаете, и эти пользовательские метаданные будут меткой времени во время загрузки объекта. Поэтому независимо от того, что произойдет с метаданными позже, пользовательские метаданные всегда будут сохранять время загрузки объекта. Затем используйте тот же метод, что и выше, но вместо получения blob.update
получите blob.metadata
, а затем используйте эту дату с той же логикой, что и выше.
Дополнительные примечания:
Чтобы использовать пользовательские метаданные, необходимо использовать префикс x-goog-meta-
, как указано в разделе Редактирование метаданных объекта в документации по просмотру и редактированию метаданных объекта.
Таким образом, [CUSTOM_METADATA_KEY] должно быть что-то вроде x-goog-meta-uploaded
и [CUSTOM_METADATA_VALUE] должно быть [CURRENT_TIMESTAMP_DURING_UPLOAD]