js前端实现多图图片上传预览的两个方法(推荐)
一、将图片转成icon码的实现方式
html代码:
<divclass="yanzRight"> <inputstyle="margin-top:5px;float:left;"id="st18"name="evidence"onchange="previewImage(this,5)"type="file"/> <spanclass="dui"id="imgOrder_dui"style="display:none;"></span> </div> <divid="preview5"style="margin-left:150px;clear:both;padding-top:15px;"> <imgsrc=""alt=""id="imghead5"height="200"width="200"style="display:none;"/> </div>
js代码
//图片预览功能
functionpreviewImage(file,imgNum)
{
varMAXWIDTH=200;
varMAXHEIGHT=200;
vardiv=document.getElementById('preview'+imgNum);
if(file.files&&file.files[0])
{
div.innerHTML='<imgid=imghead'+imgNum+'>';
varimg=document.getElementById('imghead'+imgNum+'');
img.onload=function(){
varrect=clacImgZoomParam(MAXWIDTH,MAXHEIGHT,img.offsetWidth,img.offsetHeight);
img.width=rect.width;
img.height=rect.height;
//img.style.marginLeft=rect.left+'px';
img.style.marginTop=rect.top+'px';
}
varreader=newFileReader();
reader.onload=function(evt){img.src=evt.target.result;}
reader.readAsDataURL(file.files[0]);
}
else//
{
varsFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
file.select();
varsrc=document.selection.createRange().text;
div.innerHTML='<imgid=imghead'+imgNum+'>';
varimg=document.getElementById('imghead2');
img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src=src;
varrect=clacImgZoomParam(MAXWIDTH,MAXHEIGHT,img.offsetWidth,img.offsetHeight);
status=('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height);
div.innerHTML="<divid=divhead"+imgNum+"style='width:"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;"+sFilter+src+"\"'></div>";
}
}
functionclacImgZoomParam(maxWidth,maxHeight,width,height){
varparam={top:0,left:0,width:width,height:height};
if(width>maxWidth||height>maxHeight)
{
rateWidth=width/maxWidth;
rateHeight=height/maxHeight;
if(rateWidth>rateHeight)
{
param.width=maxWidth;
param.height=Math.round(height/rateWidth);
}else
{
param.width=Math.round(width/rateHeight);
param.height=maxHeight;
}
}
param.left=Math.round((maxWidth-param.width)/2);
param.top=Math.round((maxHeight-param.height)/2);
returnparam;
}
二、使用js的另一种方法一次选中多个图片预览展示
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>测试页面</title>
<scripttype="text/javascript">
//下面用于多图片上传预览功能
functionsetImagePreviews(avalue){
vardocObj=document.getElementById("doc");
vardd=document.getElementById("dd");
dd.innerHTML="";
varfileList=docObj.files;
for(vari=0;i<fileList.length;i++){
dd.innerHTML+="<divstyle='float:left'><imgid='img"+i+"'/></div>";
varimgObjPreview=document.getElementById("img"+i);
if(docObj.files&&docObj.files[i]){
//火狐下,直接设img属性
imgObjPreview.style.display='block';
imgObjPreview.style.width='150px';
imgObjPreview.style.height='180px';
//imgObjPreview.src=docObj.files[0].getAsDataURL();
//火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
imgObjPreview.src=window.URL.createObjectURL(docObj.files[i]);
}
else{
//IE下,使用滤镜
docObj.select();
varimgSrc=document.selection.createRange().text;
alert(imgSrc)
varlocalImagId=document.getElementById("img"+i);
//必须设置初始大小
localImagId.style.width="150px";
localImagId.style.height="180px";
//图片异常的捕捉,防止用户修改后缀来伪造图片
try{
localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src=imgSrc;
}
catch(e){
alert("您上传的图片格式不正确,请重新选择!");
returnfalse;
}
imgObjPreview.style.display='none';
document.selection.empty();
}
}
returntrue;
}
</script>
</head>
<body>
<divstyle="margin:0pxauto;width:990px;">
<inputtype="file"name="file"id="doc"multiple="multiple"style="width:150px;"onchange="javascript:setImagePreviews();"accept="image/*"/>
<divid="dd"style="width:990px;"></div>
</div>
</body>
</html>
以上这篇js前端实现多图图片上传预览的两个方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。