使用HTTP条件标头上载Blob

时间:2018-05-08 09:02:26

标签: python google-cloud-storage google-cloud-python

我正在使用Google Cloud Python API将blob上传到存储桶中,这很好用。 但是,对于我的特定用例,我需要防止文件被覆盖。而不是两次去做(第一次请求检查文件是否存在,第二次上传blob),我更愿意一次性完成。
显然,这可以通过使用一些条件HTTP headers, e.g. If-None-Match: '*'来完成。

遗憾的是,Google Cloud Python API似乎不允许任何自定义标头。

关于如何解决这个问题的任何想法?

由于

1 个答案:

答案 0 :(得分:0)

GoogleCloudPlatform Issues log in GitHub - #4490中找到了一种解决方法:

  

我目前正在通过将google.cloud.storage.blob._MULTIPART_URL_TEMPLATEgoogle.cloud.storage.blob._RESUMABLE_URL_TEMPLATE替换为具有我需要的前提条件的版本来解决这个问题,例如。

from google.cloud import storage as gcs

gcs.blob._MULTIPART_URL_TEMPLATE = (
    f'{gcs.blob._MULTIPART_URL_TEMPLATE}&ifGenerationMatch=0'
)
gcs.blob._RESUMABLE_URL_TEMPLATE = (
    f'{gcs.blob._RESUMABLE_URL_TEMPLATE}&ifGenerationMatch=0'
)

这被标记为功能请求。希望它能在不久的将来添加。