如何在Django中增加Google Cloud Storage Objects的到期日期/时间

hec6srdp  于 2023-04-22  发布在  Go
关注(0)|答案(2)|浏览(137)

我有一个Django REST API,它使用storages.backends.gcloud.GoogleCloudStorage作为它的DEFAULT_FILE_STORAGE。我注意到从任何API检索的媒体文件(例如用户的个人资料图片)在URL中都有一个Expires值。
下面是一个文件的示例URL:https://storage.googleapis.com/<BUCKET_NAME>/users/a96db2f0-99a0-4691-aadb-708dc5268f77.png?Expires=1597840065&GoogleAccessId=<ACCESS_ID>&Signature=<SIGNATURE>
如果我把它转换成一个实际的日期,它实际上是从请求的时间24小时。我如何将它增加到一个非常大的时间(例如1年)?

yb3bgrhw

yb3bgrhw1#

事实证明,他们的文档中都有说明:https://django-storages.readthedocs.io/en/latest/backends/gcloud.html
GS_EXPIRATION(可选:默认值为timedelta(秒=86400))
生成的URL在过期前的有效时间。默认值为1天。公共文件将返回一个不会过期的URL。文件将由提供给django-storages的凭证签名(参见GS_CREDENTIALS)。
注意:默认的Google Compute Engine(GCE)服务帐户无法对URL进行签名。
GS_EXPIRATION值由底层Google库处理。它支持时间增量、日期时间或自纪元时间以来的整数秒。
所以我只是在www.example.com中执行GS_EXPIRATION = timedelta(seconds=864000)settings.py,这样过期时间将是10天。

mm5n2pyu

mm5n2pyu2#

如果您的存储桶在Google Cloud Storage上的权限设置为公共访问(需要细粒度),您可以在settings.py文件中设置GS_DEFAULT_ACL = 'publicRead',URL将作为公共URL返回,不会过期。
文件的公共URL示例如下:
https://storage.googleapis.com/<BUCKET_NAME>/users/a96db2f0-99a0-4691-aadb-708dc5268f77.png
希望这能帮助任何在这个问题上绊倒的人。

相关问题