删除和替换图像文件但仍显示旧图像

时间:2012-11-02 15:02:47

标签: php codeigniter file-upload

嘿,伙计们希望你能帮助我。

我遇到了最棘手的问题。我有一个脚本,用于删除/更新显示的图像文件。

问题是,它们被删除并被替换(当我检查特定目录时),但是在该特定网址上显示的图像仍然是旧的。

即我删除旧文件(1.jpg,它是灰色的)后,这就是目录的样子:

enter image description here

但是,网址仍然显示1.jpg作为旧的灰色img,即 enter image description here

现在,你可能会认为我正在查找错误的网址并添加/删除另一个文件,但为了确认,我在同一目录中添加了一个foo.html文件并用foo.html替换了1.jpg确认我在正确的目录中,我是。

我的编辑替换文件的脚本是:

if(!empty($_FILES["pic".$ite]["name"])){
        if($id){
            unlink($path."$ite.jpg");

        }
        $ext = pathinfo($_FILES['pic'.$ite]['name'], PATHINFO_EXTENSION);
        $config["file_name"]="$ite.jpg";
        $this->transfer.="$ite.$ext";
        $this->upload->initialize($config);


        if(!$this->upload->do_upload("pic".$ite)){
            $this->transfer.=lang('msg_errorimage').' '.$ite;
        }
        }

我刚刚将文件夹从“3”重命名为“3a”,然后打开图像链接并出现404错误,然后将文件夹的名称从“3a”更改回“3”,现在正确图像正在显示。

3 个答案:

答案 0 :(得分:5)

在尝试加载图像时,在文件扩展名后放置一些参数,

例如1.jpg?t = <?=time()?>

因为有时浏览器会缓存数据,所以如果你加载同名文件的话 它将加载缓存而不是真实文件。

即使在js文件中,如果你改变你的js文件中的某些代码行,有时也会这样 如果您的更改未生效,则需要强制刷新缓存 要查看更改,可以使用ctrl + F5,也可以只在文件扩展名后放置参数

例如:jsfile.js?t = <?=time()?>

答案 1 :(得分:3)

选项1:清除缓存(CTRL + F5强制从服务器加载页面), 选项2:如果可能,请选择唯一的文件名。

请注意,选项1将导致整个页面从服务器重新加载,而选项2将仅加载新图像。

答案 2 :(得分:2)

如果您要从该页面中删除缓存,则需要将其包含在页面顶部: -

$this->output->set_header("Expires: Tue, 01 Jan 2000 00:00:00 GMT"); 
$this->output->set_header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
$this->output->set_header("Cache-Control: post-check=0, pre-check=0", false); 
$this->output->set_header("Pragma: no-cache");