登录论坛 | 注册会员 设为首页 | 收藏本站
当前位置 : 首页>软件学院>程序开发>网页设计>正文
 
介绍几种使用JS判断文件大小的方法

http://www.dbit.cn 2010/4/7 7:53:43  来源:东北IT网  编辑:叶子
 

本文使用js判断文件大小的几种方法。
方法一,利用ActiveX控件实现:

 1 <script type="text/javascript"> 2 function getFileSize(filePath) 3 { 4 var fso = new ActiveXObject("Scripting.FileSystemObject"); 5 alert("文件大小为:" fso.GetFile(filePath).size); 6 } 7 </script>   8 <body> 9 <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);"> 10 </body>

这个方法在IE可以用,不足之处会有安全提示,把文件名改为.hta则会屏蔽掉安全提示。
方法二,利用img的dynsrc属性:

1 <script type="text/javascript"> 2 function getFileSize(filePath) 3 { 4 var image=new Image(); 5 image.dynsrc=filePath; 6 alert(image.fileSize); 7 } 8 </script> 9 <body> 10 <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)"> 11 </body>

这个方法在IE6可以用,在IE7,IE8,Firefox,chrome不能用。

方法三,利用img的fileSize:

1 <script language=javascript> 2 var ImgObj=new Image(); //建立一个图像对象   3 var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型   4 var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 图片相关属性   5 //以下为限制变量   6 var AllowExt=".jpg|.gif|.doc|.txt|" //允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示   7 //var AllowExt=0   8 var AllowImgFileSize=70; //允许上传图片文件的大小 0为无限制 单位:KB   9 var AllowImgWidth=500; //允许上传的图片的宽度 ?为无限制 单位:px(像素)   10 var AllowImgHeight=500; //允许上传的图片的高度 ?为无限制 单位:px(像素)   11 HasChecked=false; 12 function CheckProperty(obj) //检测图像属性   13 { 14 FileObj=obj; 15 if(ErrMsg!="") //检测是否为正确的图像文件 返回出错信息并重置   16 { 17 ShowMsg(ErrMsg,false); 18 return false; //返回   19 } 20 21 if(ImgObj.readyState!="complete") //如果图像是未加载完成进行循环检测   22 { 23 setTimeout("CheckProperty(FileObj)",500); 24 return false; 25 } 26 27 ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小   28 ImgWidth=ImgObj.width //取得图片的宽度   29 ImgHeight=ImgObj.height; //取得图片的高度   30 FileMsg="\n图片大小:" ImgWidth "*" ImgHeight "px"; 31 FileMsg=FileMsg "\n图片文件大小:" ImgFileSize "Kb"; 32 FileMsg=FileMsg "\n图片文件扩展名:" FileExt; 33 34 if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth) 35 ErrMsg=ErrMsg "\n图片宽度超过限制。请上传宽度小于" AllowImgWidth "px的文件,当前图片宽度为" ImgWidth "px"; 36 37 if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight) 38 ErrMsg=ErrMsg "\n图片高度超过限制。请上传高度小于" AllowImgHeight "px的文件,当前图片高度为" ImgHeight "px"; 39 40 if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize) 41 ErrMsg=ErrMsg "\n图片文件大小超过限制。请上传小于" AllowImgFileSize "KB的文件,当前文件大小为" ImgFileSize "KB"; 42 43 if(ErrMsg!="") 44 ShowMsg(ErrMsg,false); 45 else 46 ShowMsg(FileMsg,true); 47 } 48 49 ImgObj.onerror=function(){ErrMsg='\n图片格式不正确或者图片已损坏!'} 50 51 function ShowMsg(msg,tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容   52 { 53 msg=msg.replace("\n","<li>"); 54 msg=msg.replace(/\n/gi,"<li>"); 55 if(!tf) 56 { 57 document.all.UploadButton.disabled=true; 58 FileObj.outerHTML=FileObj.outerHTML; 59 MsgList.innerHTML=msg; 60 HasChecked=false; 61 } 62 else 63 { 64 document.all.UploadButton.disabled=false; 65 if(IsImg) 66 PreviewImg.innerHTML="<img src='" ImgObj.src "' width='60' height='60'>" 67 else 68 PreviewImg.innerHTML="非图片文件"; 69 MsgList.innerHTML=msg; 70 HasChecked=true; 71 } 72 } 73 74 function CheckExt(obj) 75 { 76 ErrMsg=""; 77 FileMsg=""; 78 FileObj=obj; 79 IsImg=false; 80 HasChecked=false; 81 PreviewImg.innerHTML="预览区"; 82 if(obj.value=="")return false; 83 MsgList.innerHTML="文件信息处理中..."; 84 document.all.UploadButton.disabled=true; 85 FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase(); 86 if(AllowExt!=0&&AllowExt.indexOf(FileExt "|")==-1) //判断文件类型是否允许上传   87 { 88 ErrMsg="\n该文件类型不允许上传。请上传 " AllowExt " 类型的文件,当前文件类型为" FileExt; 89 ShowMsg(ErrMsg,false); 90 return false; 91 } 92 93 if(AllImgExt.indexOf(FileExt "|")!=-1) //如果图片文件,则进行图片信息处理   94 { 95 IsImg=true; 96 ImgObj.src=obj.value; 97 CheckProperty(obj); 98 return false; 99 } 100 else 101 { 102 FileMsg="\n文件扩展名:" FileExt; 103 ShowMsg(FileMsg,true); 104 } 105 106 } 107 108 function SwitchUpType(tf) 109 { 110 if(tf) 111 str='<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">' 112 else 113 str='<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">' 114 document.all.file1.outerHTML=str; 115 document.all.UploadButton.disabled=true; 116 MsgList.innerHTML=""; 117 } 118 119 </script> 120 <form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;"> 121 <fieldset style="width: 372; height: 60;padding:2px;"> 122 <legend><font color="#FF0000">图片来源</font></legend> 123 <input type="radio" name="radio1" checked onclick="SwitchUpType(true);">本地<input type="radio" name="radio1" onclick="SwitchUpType(false);">远程:<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;"> <input type="submit" id="UploadButton" value="开始上传" disabled> 124 125 <div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;"> 126 <table border="0"><tr><td width="60" id="PreviewImg">预览区</td><td id="MsgList" valign="top"></td></tr></table> 127 </div> 128 </fieldset> 129 </form>

本新闻共2页,当前在第1页  1  2  

收藏】【打印】【进入论坛
  相关文章:

·KJS发布ATOM核心新款UMPC 售价6400元起
·YUICompress:高效压缩CSS和JS代码 
·如何反击令人防不胜防的JS挂马

 
 
 
最新文章

抢先苹果,消息称英特尔芯片采用台积电
三星揭晓业内首款单条 512GB DDR5 内存
vivo 高端新机爆料:120Hz 曲面屏 + 天
vivo Y21 在印度正式上市:Helio P35 芯
微星推出 GeForce RTX 3080 Sea Hawk X
消息称三星 Galaxy Tab S8 系列平板将放
机械革命推出 F6 轻薄本:16 英寸全面屏
英特尔 12 代 Alder Lake CPU 600 系列
雷军:向小米手机 1 首批用户每人赠送价
小米李明谈用户被踢出 MIUI 测试版:大

推荐文章
1
2
3
4
5
6
7
8
9
10
叛逆嫩模性感写真
宫如敏不雅照疯传 看张馨予韩一菲兽兽谁
不惧孔子抢位 阿凡达游戏影音配置推荐
2015第十七届“东北安博会”火爆招商
第十六届东北国际公共安全防范产品博览
2016年第五届中国国际商业信息化博览会
2016年第五届中国国际POS机及相关设备展
互联网电视熟了吗 2013最火电视深解析
桑达获邀出席2015中国(广州)国际POS机
宝获利报名参加“2015年度中国POS机行业
八卦图解 More>>
叛逆嫩模性感写真 宫如敏不雅照疯传 看张馨予韩一菲
周伟童魔鬼身材日本性感写真图  联想V360笔记本模特写真