JS获取文件大小方法小结


Posted in Javascript onDecember 08, 2015

本文实例总结了JS获取文件大小方法。分享给大家供大家参考,具体如下:

方法一,利用ActiveX控件实现:

<script type="text/javascript">
function getFileSize(filePath)
{
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  alert("文件大小为:"+fso.GetFile(filePath).size);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">
</body>

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

方法二,利用img的dynsrc属性:

代码:

<script type="text/javascript">
function getFileSize(filePath)
{
  var image=new Image();
  image.dynsrc=filePath;
  alert(image.fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
</body>

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

方法三,利用img的fileSize:

代码:

<script language=javascript> 
var ImgObj=new Image(); //建立一个图像对象 
var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型 
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 图片相关属性 
//以下为限制变量 
var AllowExt=".jpg|.gif|.doc|.txt|" //允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示 
//var AllowExt=0 
var AllowImgFileSize=70;  //允许上传图片文件的大小 0为无限制 单位:KB 
var AllowImgWidth=500;   //允许上传的图片的宽度 ?为无限制 单位:px(像素) 
var AllowImgHeight=500;   //允许上传的图片的高度 ?为无限制 单位:px(像素) 
HasChecked=false; 
function CheckProperty(obj)  //检测图像属性 
{ 
 FileObj=obj; 
 if(ErrMsg!="")   //检测是否为正确的图像文件 返回出错信息并重置 
 { 
   ShowMsg(ErrMsg,false); 
   return false;   //返回 
 } 
 if(ImgObj.readyState!="complete") //如果图像是未加载完成进行循环检测 
 { 
   setTimeout("CheckProperty(FileObj)",500); 
   return false; 
 } 
 ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小 
 ImgWidth=ImgObj.width   //取得图片的宽度 
 ImgHeight=ImgObj.height;  //取得图片的高度 
 FileMsg="\n图片大小:"+ImgWidth+"*"+ImgHeight+"px"; 
 FileMsg=FileMsg+"\n图片文件大小:"+ImgFileSize+"Kb"; 
 FileMsg=FileMsg+"\n图片文件扩展名:"+FileExt; 
 if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth) 
   ErrMsg=ErrMsg+"\n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px"; 
 if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight) 
   ErrMsg=ErrMsg+"\n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px"; 
 if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize) 
   ErrMsg=ErrMsg+"\n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB"; 
 if(ErrMsg!="") 
   ShowMsg(ErrMsg,false); 
 else 
   ShowMsg(FileMsg,true); 
 } 
 ImgObj.onerror=function(){ErrMsg='\n图片格式不正确或者图片已损坏!'} 
 function ShowMsg(msg,tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容 
 { 
 msg=msg.replace("\n","<li>"); 
 msg=msg.replace(/\n/gi,"<li>"); 
 if(!tf) 
 { 
   document.all.UploadButton.disabled=true; 
   FileObj.outerHTML=FileObj.outerHTML; 
   MsgList.innerHTML=msg; 
   HasChecked=false; 
 } 
 else 
 { 
   document.all.UploadButton.disabled=false; 
   if(IsImg) 
    PreviewImg.innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>" 
   else 
    PreviewImg.innerHTML="非图片文件"; 
    MsgList.innerHTML=msg; 
    HasChecked=true; 
 } 
} 
function CheckExt(obj) 
{ 
 ErrMsg=""; 
 FileMsg=""; 
 FileObj=obj; 
 IsImg=false; 
 HasChecked=false; 
 PreviewImg.innerHTML="预览区"; 
 if(obj.value=="")return false; 
 MsgList.innerHTML="文件信息处理中..."; 
 document.all.UploadButton.disabled=true; 
 FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase(); 
 if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) //判断文件类型是否允许上传 
 { 
   ErrMsg="\n该文件类型不允许上传。请上传 "+AllowExt+" 类型的文件,当前文件类型为"+FileExt; 
   ShowMsg(ErrMsg,false); 
   return false; 
 } 
 if(AllImgExt.indexOf(FileExt+"|")!=-1)  //如果图片文件,则进行图片信息处理 
 { 
   IsImg=true; 
   ImgObj.src=obj.value; 
   CheckProperty(obj); 
   return false; 
 } 
 else 
 { 
   FileMsg="\n文件扩展名:"+FileExt; 
   ShowMsg(FileMsg,true); 
 } 
 
 } 
 function SwitchUpType(tf) 
 { 
   if(tf) 
   str='<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">' 
   else 
   str='<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">' 
   document.all.file1.outerHTML=str; 
   document.all.UploadButton.disabled=true; 
   MsgList.innerHTML=""; 
 } 
 </script> 
 <form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;"> 
 <fieldset style="width: 372; height: 60;padding:2px;"> 
 <legend><font color="#FF0000">图片来源</font></legend> 
 <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> 
 <div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;"> 
 <table border="0"><tr><td width="60" id="PreviewImg">预览区</td><td id="MsgList" valign="top"></td></tr></table> 
 </div> 
 </fieldset> 
 </form>

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

附:js判断文件格式及大小

//判断照片大小
function getPhotoSize(obj){
  photoExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名
  if(photoExt!='.jpg'){
    alert("请上传后缀名为jpg的照片!");
    return false;
  }
  var fileSize = 0;
  var isIE = /msie/i.test(navigator.userAgent) && !window.opera;      
  if (isIE && !obj.files) {     
     var filePath = obj.value;      
     var fileSystem = new ActiveXObject("Scripting.FileSystemObject");  
     var file = fileSystem.GetFile (filePath);        
     fileSize = file.Size;     
  }else { 
     fileSize = obj.files[0].size;   
  } 
  fileSize=Math.round(fileSize/1024*100)/100; //单位为KB
  if(fileSize>=10){
    alert("照片最大尺寸为10KB,请重新上传!");
    return false;
  }
}

jsp页面:

<input type="file" id="imgFile" name="upload" style="width:150px;" onchange="getPhotoSize(this)"/>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
经典海量jQuery插件 大家可以收藏一下
Feb 07 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
Sep 13 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 Javascript
javascript跨域原因以及解决方案分享
Apr 08 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
在JavaScript中操作数组之map()方法的使用
Jun 09 Javascript
利用Javascript仿Excel的数据透视分析功能
Sep 07 Javascript
微信小程序 教程之模块化
Oct 17 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 Javascript
js比较两个单独的数组或对象是否相等的实例代码
Apr 28 Javascript
Vue实现商品详情页的评价列表功能
Sep 04 Javascript
JS实现纸牌发牌动画
Jan 19 Javascript
js+ajax实现获取文件大小的方法
Dec 08 #Javascript
JS表格组件神器bootstrap table详解(基础版)
Dec 08 #Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 #Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 #Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
Dec 08 #Javascript
jQuery实现的简单提示信息插件
Dec 08 #Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 #Javascript
You might like
杏林同学录(一)
2006/10/09 PHP
PHP insert语法详解
2008/06/07 PHP
两个开源的Php输出Excel文件类
2010/02/08 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
php验证手机号码
2015/11/11 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
python正则分析nginx的访问日志
2017/01/17 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python实现不规则图形填充的思路
2020/02/02 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
html5时钟实现代码
2010/10/22 HTML / CSS
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
小学生秋游活动方案
2014/02/23 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
财务人员入职担保书
2015/09/22 职场文书