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 >   
11 
12 

 

这个方法在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 >
12 
13 

 

这个方法在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" οnchange="CheckExt(this)" style="width:180px;"> '  
112       else  
113       str = ' <input type="text" name="file1" οnblur="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 >
130 
131 

 

 

在IE,FireFox,chrome都可以用,不过只判断图片文件的大小。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值