0
点赞
收藏
分享

微信扫一扫

(转)JS实现图片上载时的预览

A邱凌 2022-12-05 阅读 119


  在客户端中,用JS实现文件上传时的图片预览,是个不错的选择,但其实在IE,FIREFOX下还好,在opera,safi,chrome下却不行的,下面转个在ie,firefox下实现的方法
firefox使用了getAsDataURL方法,而IE是用了滤镜。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml">

<body>

<input type=file name="doc" id="doc" οnchange="javascript:setImagePreview();">

<p>

<div id="localImag"><img id="preview" width=-1 height=-1 style="diplay:none" /></div>

</p>

<script>

function setImagePreview() {

var docObj=document.getElementById("doc");

var fileName = docObj.value;

var imgObjPreview=document.getElementById("preview");

if(docObj.files && docObj.files[0]){

//火狐下,直接设img属性

imgObjPreview.style.display = 'block';

imgObjPreview.style.width = '150px';

imgObjPreview.style.height = '120px';

imgObjPreview.src = docObj.files[0].getAsDataURL();

}else{

//IE下,使用滤镜

docObj.select();

var imgSrc = document.selection.createRange().text;

var localImagId = document.getElementById("localImag");

//必须设置初始大小

localImagId.style.width = "150px";

localImagId.style.height = "120px";

//图片异常的捕捉,防止用户修改后缀来伪造图片

try{

localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";

localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;

}catch(e){

alert("您上传的图片格式不正确,请重新选择!");

return false;

}

imgObjPreview.style.display = 'none';

document.selection.empty();

}

return true;

}

</script>

</body>

</html>


  一个更完善的方案讲解,可以参考http://hudeyong926.iteye.com/blog/693018

举报

相关推荐

0 条评论