繁体   English   中英

无法通过 API 更新 Google Cloud Storage 上的图像

[英]Unable To Update Image On Google Cloud Storage via API

我正在尝试通过 Python API 覆盖我的云存储中的图像,但在我覆盖它并刷新(并删除浏览器缓存)云网页或公共链接后图像仍然相同,即使是第二天,但有时它会随机更新为新形象! 编辑:元数据得到更新,但文件大小信息没有更新,它仍然在云网页和公共 url 中显示旧图像。

我期望的是,如果我通过 API 将文件上传到云存储,我可以在短时间内从公共链接下载新文件而不是旧图像。 我希望能够使用 Cache-Control File-directive 定义缓存行为(编辑:这可能不是关于缓存的问题,因为即使第二天图像仍然是旧图像)。

这是我的代码:

blob = bucket.blob(name)

blob.cache_control = "no-store"

blob.upload_from_filename(name)

我试过:

  • 通过云网页删除旧图像,然后在几秒钟后通过 Python 上传同名的新图像:它有效。 我可以从公共链接下载新图像并在云网页中查看。 编辑:它似乎只工作了几次!
  • 使用 Python 删除图像,然后直接通过 Python 上传新图像:不起作用。 当它被删除时,公共链接不显示它。 但是在我上传新的之后,公共链接再次显示旧的。
  • 我读到公共存储桶文件的标准缓存设置是“public, max-age=3600”。 所以我使用了缓存控制指令并将其设置为“no-store”或“public,age=0”。 然后我确认这些 Cache-Control 设置反映在浏览器调试控制台的标头中。 但仍然会随时加载旧图像。
  • 我将存储桶类型更改为区域而不是多区域。 即使在删除存储桶、重新创建它并再次移动其中的数据之后,旧图像仍然出现!

非常感谢任何提示!

我成功了!

它可能与谷歌云存储无关。

但如果有人可能犯了和我一样的错误:

我使用了 Django 的FilesSystemStorage -Class并将与旧文件同名的新文件保存在/temp目录中,假设旧文件仍然存在将被覆盖。 但是它给了新文件另一个名字。 后来我用blob.upload_from_filename(name)上传旧文件

这就是为什么所有的事情都是随机发生的。

感谢所有想解决这个问题的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM