php重命名交换文件名不会重新加载图像

时间:2012-04-09 09:58:28

标签: php rename swap

我在一个有一组图像的网站上工作,第一张图像就像一个头像..当我想改变头像(第一张图片)我做的是我把第一张图片名称与新图像交换我想用作头像。 我在ajax函数上执行此操作,因此在执行此操作后我不需要刷新页面。

rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name);
rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name);
rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile);

我的问题是在我这样做之后,我从div中删除了图像,然后我按照新的顺序再次添加它们,但我认为浏览器将图像保存在某个地方并且不重新加载它们并且它们以相同的顺序出现。只有在我刷新页面后,它们才会以正确的顺序出现。 是否有解决方案让浏览器再次上传图像?

先谢谢你,丹尼尔!

编辑:这是ajax函数:

function avaPic(offer_id, pic_name, onFinish) {
    var request;
    if(window.XMLHttpRequest)
        request = new XMLHttpRequest();
     else
        request = new ActiveXObject("Microsoft.XMLHTTP");

    request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
            onFinish();
        }
    }

    request.open("GET", "php/script.php?action=avaPic&offer_id=" + offer_id + "&pic_name=" + pic_name, true);
    request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    request.send();
}

这是php:

if($action == "avaPic") {
        $offer_id = $_GET["offer_id"];
        $pic_name = $_GET["pic_name"];
        $filearray = getDirectoryList("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/");
        $avafile = $filearray[0];
        $temp_name = "temp.jpg";

        rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name);
        rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name);
        rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile);
    }

在onFinish函数上,我用图像刷新div,希望它们在新的顺序中再次重新排序,但它们看起来和以前一样,直到我刷新页面

我找到了,如何强制浏览器重新加载图片。

<div>
       <img src="img1.jpg" />
       <img src="img2.jpg" />
       <img src="img3.jpg" />
</div>

相反,我必须生成带有时间参数的html代码,以使浏览器重新加载图像。像这样<img src='"img1.jpg?" + d.getTime()' />

1 个答案:

答案 0 :(得分:0)

检查这会解决您的问题, 如果您有这样的HTML,

        <div>
           <img src="abc.jpg" />
           <img src="abc.jpg" />
           <img src="abc.jpg" />
        </div>

在你的ajax调用之后运行这个jquery

        $('div img').attr("src",$('img').attr("src")+"?+"Math.random())