我使用JQuery AjaxUpload上传图片,并尝试使用上传的图片更新图像控件,但代码无法正常工作,甚至无法设置ViewState。我想知道为什么会这样。以下是代码:
**Javascript:**<br>
<script type="text/javascript"> /*<![CDATA[*/<br>
$(document).ready(function() {<br>
/* Example 1 */<br>
var button = $('#button1'), interval;<br>
new AjaxUpload(button, {<br>
action: 'fileupload.aspx',<br>
name: 'myfile',<br>
onSubmit: function(file, ext) {<br>
// change button text, when user selects file<br>
button.text('Uploading');<br>
// If you want to allow uploading only 1 file at time,<br>
// you can disable upload button<br>
// this.disable();<br>
// Uploding -> Uploading. -> Uploading...<br>
interval = window.setInterval(function() {<br>
var text = button.text();<br>
if (text.length < 13) {<br>
button.text(text + '.');<br>
} else {<br>
button.text('Uploading');<br>
}<br>
}, 200);<br>
},<br>
onComplete: function(file, response) {<br>
button.text('Upload');<br>
window.clearInterval(interval);<br>
// enable upload button<br>
this.enable();<br>
// add file to the list<br>
$('<li></li>').appendTo('#example1 .files').text(file);<br>
// document.getElementById('img').src = 'C:\\Documents and <br>Settings\\Kavita\\My Documents\\Visual Studio 2008\\WebSites\\WebSite2\\ajaxUpload\\' + file;<br>
// alert(document.getElementById('img').src);<br>
}<br>
});<br>
}); /*]]>*/</script><br><br>
fileupload.aspx.cs代码
HttpPostedFile hpfFile = Request.Files["myfile"];
if (hpfFile != null)
{
hpfFile.SaveAs(Server.MapPath("~/ajaxUpload/" + hpfFile.FileName));
img.Src = Server.MapPath("~/ajaxUpload/" + hpfFile.FileName);
}<br>
请告诉我为什么“img.Src”没有更新?
答案 0 :(得分:1)
img.Src正在服务器端进行更新,但是当你进行Ajax调用时,它不会被发送回客户端。
如果要显示图像,必须在onComplete
jQuery函数中完成,因为此代码将在客户端执行,此时图像已完全上传。
我还注意到服务器方法出错:您使用Server.MapPath
来设置图像源,这是错误的,因为它会将服务器的路径发送给图像(即“C:\ inetpub ...” ),您应该只将值设置为:
img.Src = "~/ajaxUpload/" + hpfFile.FileName;