【问题标题】:AppEngine Image Not Refreshed when file is replaced替换文件时未刷新 AppEngine 图像
【发布时间】:2015-08-03 23:25:21
【问题描述】:

我有一个用户可以上传个人资料图片的应用。如果他们愿意,稍后他们可以上传替代品。在传统设置中工作正常,但文件 url 未更新为新文件 CloudStorageTools::getImageServingUrl($object_image_file); 正在返回旧图像服务 url,新文件的路径与旧文件的路径相同。我试图在上传新版本之前取消链接文件,但这也不起作用。如果我用新的照片内容替换给定 url 的给定文件,我如何获取 url 来提供新图像而不是保留旧图像? 当我在开发人员控制台中查看照片时,照片已正确更新,但 getImageServingUrl 调用返回的 url 甚至在很久之后仍返回原始文件内容。在传统环境中,我会附加一个时间来推动自动刷新,但这是不同的。 谢谢

【问题讨论】:

    标签: php image google-app-engine refresh


    【解决方案1】:

    不支持在同一云存储路径但文件内容不同的情况下调用 CloudStorageTools::getImageServingUrl($object_image_file),您看到的行为是预期的。

    您需要在文件名中引入一些使其独一无二的内容 - 然后调用 CloudStorageTools::getImageServingUrl($object_image_file)。

    【讨论】:

    • 谢谢。有没有其他方法可以做到这一点,或者我会遇到同样的问题。我可以改为 CloudStorageTools::getPublicUrl() 吗?如果我使用 move_uploaded_file,我将如何设置公共阅读?我更喜欢让脚本适应另一种方法,而不是更改参考系统。
    • 如果您不使用 getImageServingUrl() 的任何其他功能,则可以使用 getPublicUrl。您可以在调用 move_uploaded 文件时在上下文选项中设置 ACL。 $gs_options = [ 'gs' => [ 'acl' => 'public-read', ], ];
    • @StuartLangley 你打算如何替换文件呢?如果我继续使最后一个文件唯一,我将无法删除旧文件..
    • 为什么不能删除旧的?
    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多