上传后图片src不变

Posted

技术标签:

【中文标题】上传后图片src不变【英文标题】:image src doesnt change after upload 【发布时间】:2009-10-26 19:52:47 【问题描述】:

我正在使用 Ajaxupload 插件进行上传,我在 ajaxupload 的 OnComplete 事件中使用此功能;

function degis()
var a = "<?php echo $id; ?>";
document.getElementById("imga").src = "../artwork/"+a+"/logo.jpg?dummy=371662";
document.getElementById("imga").style.width = "500px";
document.getElementById("imga").style.height = "175px";

但新上传的图片没有出现是有原因的。我试过“?dummy=371662”但没有用。

我也将它用于 ajaxupload 的 Onsubmit 事件

function updeg()
var a = "uploading.gif";
document.getElementById("imga").style.width = "50px";
document.getElementById("imga").style.height = "50px";
document.getElementById("imga").src = a;


</script>

这是这个元素的html

 <img id="imga"   src="../artwork/<?php echo $id; ?>/logo.jpg?dummy=371662" >

对此有何建议?

【问题讨论】:

请显示相关的 HTML。 您的 HTML 显示的内容与 JS 相同。你是说它在 HTML 中有效,但在 JS 中无效? $id 是两者之间唯一变化的东西吗? 当页面加载“imga”元素src是好的,但在上传完成后,它会调用degis()函数来改变“imga”src attr。对于新上传的图片,它显示的是旧的,我希望我能解释一下对不起 顺便说一下$id总是一样的,新上传的图片名称也是那个$id变量 【参考方案1】:

根据您上面的编辑和 cmets,我认为您需要这样的东西:

function junk() 
    return (new Date()).getTime() + Math.round(Math.random());


function degis() 
    var img = document.getElementById("imga");
    if (img) 
        img.src = "../artwork/<?php echo $id; ?>/logo.jpg?nocache=" + junk();
        img.style.width = "500px";
        img.style.height = "175px";
    

您之前绕过缓存的尝试无效,因为您的“虚拟”值每次都相同。通过使用junk()函数,如上,每次得到不同的随机值,保证图片不会被缓存。

【讨论】:

好的,但如果没有修改,我如何在上传过程后更改图像? 哦,对不起,你在谈论高度和宽度,我正在改变它,因为 ajaxupload 的 OnSubmit 事件还有一个功能是改变高度和宽度,我正在编辑我的问题 已编辑以回答当前问题和 cmets。

以上是关于上传后图片src不变的主要内容,如果未能解决你的问题,请参考以下文章

微擎app端上传图片后删除不了图片

手动写一个上传图片的组件,不适用插件,包括限制图片大小,格式

前端上传图片变成var

img如何接收jquery ajax异步上传的动态图片

uni-app 图片上传压缩方法 拍照图片过大

Yii框架上传后展示图片