【问题标题】:Force Callback to reload file强制回调以重新加载文件
【发布时间】:2015-04-08 09:38:10
【问题描述】:

我正在使用 php 和 jQuery 工具来上传和裁剪图片。它运作良好。但我想在上传和裁剪图片后预览一下。我得到了预览,但这是裁剪前的照片。我猜它从任何缓存中获取图片。当我检查服务器上的真实文件时,它被裁剪了。

是否知道如何强制以下函数真正从服务器获取新文件?

那是代码,我把url放回表单中的div以供预览。

    new ImgSelect( $('#imgselect_container'), {
cropComplete: function(image) {
    $('.avatar').html('<img src="scripts/imgSelect/files/' + image.name + '">');
        }
    });

【问题讨论】:

  • 如果这实际上是由缓存引起的,则将缓存破坏字符串附加到 url,如时间戳。 + image.name + '?t='+ timestamp +
  • 好主意,但我收到了这个 JavaScript 错误:Uncaught ReferenceError: timestamp is not defined
  • 你需要定义你的自我——我把它留给你作为练习。

标签: php jquery image crop image-uploading


【解决方案1】:

要强制重新下载图像,您可以在查询字符串中附加时间戳。试试这个:

$('.avatar').html('<img src="scripts/imgSelect/files/' + image.name + '?t=' + +new Date + '">');

您还可以修改服务器的缓存设置。

【讨论】:

  • 感谢您的想法。我认为在新日期之前有一个 +,我放弃了,但仍然无法正常工作,同样的问题,未裁剪的图片将被加载。
  • @Fabrizio 不,new Date() 之前的+ 是必需的。它将日期转换为数字。
  • :D 对不起,我现在用 + 做了,它给了我一个类似 ...?t=14.... 的网址,所以它看起来正确,但它仍然是未裁剪的图片。
  • “所以它看起来正确,但它仍然是未裁剪的图片” – 那么它可能不是实际的缓存问题,而是时机 i> 问题——因为图像尚未在服务器端完成处理。
  • 好吧,您可以尝试超时,希望到那时处理已经完成……或者检查您正在使用的工具的文档,看看它是否明确提供了要处理的东西那个用例。
猜你喜欢
  • 2014-03-02
  • 2011-07-02
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多