如何在图片上传前实现本地预览,这个功能实现起来似乎很简单,但却又是很棘手。
之前在从事项目开发中,遇到过这样的问题,原先有写好的代码,以为是很好实现的功能,
故没有特别在意。今天无意中研究了一下,原来并不像想象中的那样简单。直接上代码 如图
<table>
<tr>
<td>
<asp:FileUpload ID=BtnUpload runat=server onchange=onFilechange() />
</td>
</tr>
<tr>
<td>
<img id=ImagePhoto alt= src= height=100px width=100px />
<div id=pic runat=server style=filter: progid:DXImageTransform.Microsoft.AlphaimageLoader(sizingMethod=scale);
width: 100px; height: 100px; display: none>
</div>
<asp:Button ID=Button1 runat=server Text=上传 />
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
<tr>
<td>
<asp:FileUpload ID=BtnUpload runat=server onchange=onFilechange() />
</td>
</tr>
<tr>
<td>
<img id=ImagePhoto alt= src= height=100px width=100px />
<div id=pic runat=server style=filter: progid:DXImageTransform.Microsoft.AlphaimageLoader(sizingMethod=scale);
width: 100px; height: 100px; display: none>
</div>
<asp:Button ID=Button1 runat=server Text=上传 />
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
JS代码:
<script language=javascript type=text/javascript>
function onFilechange() {
var url = $(#BtnUpload).attr(value);
$(#ImagePhoto).css(width,0);
$(#ImagePhoto).css(height,0);
$(#pic).css(display,block);
document.getElementById(pic).filters.item(DXImageTransform.Microsoft.AlphaimageLoader).src = url;
}
</script>
function onFilechange() {
var url = $(#BtnUpload).attr(value);
$(#ImagePhoto).css(width,0);
$(#ImagePhoto).css(height,0);
$(#pic).css(display,block);
document.getElementById(pic).filters.item(DXImageTransform.Microsoft.AlphaimageLoader).src = url;
}
</script>
注意以下代码:
<div id=pic runat=server style=filter: progid:DXImageTransform.Microsoft.AlphaimageLoader(sizingMethod=scale);
width: 100px; height: 100px; display: none>
</div>
width: 100px; height: 100px; display: none>
</div>
这里的div就是预览照片的,默认的image控件初始化的时候加载,当选择了新的照片后会隐藏image控件,显示Pic。
这里的filter:Progid:DXImageTransform.Microsoft.AlphaimageLoader(sizingMethod=scale) 是微软内置的库,作用是实现本地图片预览。
这里会存在一个问题,在网页中图片是不识别绝对路径的,只识别网络路径,我想这个库应该是将本地的路径转换成网络的路径吧。(个人猜测!)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。