图片上传后我们有时候需要预览一下上传后的效果,所以我们必要加上图片上传即时预览的功能,下面的代码轻松实现。
源码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
//设置图片上传后预览的div样式
<style type="text/css">
#preview, .img, img
{
width:200px;
height:200px;
}
#preview
{
border:1px solid #000;
}
</style>
</head>
<body>
<div id="preview"></div>
<input type="file" onchange="preview(this)" />
//图片上传和预览
<script type="text/javascript">
function preview(file)
{
var prevDiv = document.getElementById('preview');
if (file.files && file.files[0])
{
var reader = new FileReader();
reader.onload = function(evt){
prevDiv.innerHTML = '
<img src="' + evt.target.result + '" />
';
}
reader.readAsDataURL(file.files[0]);
}
else
{
prevDiv.innerHTML = '
<div class="img"
style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>
';
}
}
</script>
</body>
</html>
说明
1、删去 #preview, .img, img 中 对于高 height 的设置
#preview, .img, img { width:200px; }
这样,显示出来的图象,仍然保持原有的 宽/高 之比例。
2、 删去 <div > 的属性:
style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,
即:
var s = '<div class="img"';
s+='src=\'' + file.value + '\'"></div>';
prevDiv.innerHTML=s;
这样,仍然保持原有的功能。