我有一个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年)?
2条答案
按热度按时间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天。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
希望这能帮助任何在这个问题上绊倒的人。