首页 > 编程 > JavaScript > 正文

真正好用的js验证上传文件大小的简单方法

2019-11-20 08:39:17
字体:
来源:转载
供稿:网友

最近使用到一个文件上传功能,发现恶意上传一个2G文件时,后台处理响应较慢,遂想到能否使用js来进行客户端的验证。但查阅网上多处资料,均使用 ActiveXObject("Scripting.FileSystemObject"); 的方法,该方法需要将Internet选项中安全级别提高,启用一个系统本身不推荐的选项,会出现如下非常不友好的提示:

所以这边并没有用到,而是寻求其他方法。

这边新的思路是img标签中的dynsrc属性。

在FireFox、Chrome浏览器中可以根据document.getElementById(“id_file”).files[0].size 获取上传文件的大小(字节数),而IE浏览器中不支持该属性,只能借助<img>标签的dynsrc属性,来间接实现获取文件的大小(但需要同意ActiveX控件的运行,但是不会引起上面的不友好、不安全的提示)。

具体方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">   <head>   <meta name="DEscription" contect="my code demo" />   <meta name="Author" contect="Michael@www.micmiu.com" />   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <title>js check file size @ www.micmiu.com</title>   </head>   <body>     <img id="tempimg" dynsrc="" src="" style="display:none" />     <input type="file" name="file" id="fileuploade" size="40" />     <input type="button" name ="check" value="checkfilesize" onclick="checkfile()"/>    </body>   <script type="text/javascript">     var maxsize = 2*1024*1024;//2M     var errMsg = "上传的附件文件不能超过2M!!!";     var tipMsg = "您的浏览器暂不支持计算上传文件的大小,确保上传文件不要超过2M,建议使用IE、FireFox、Chrome浏览器。";     var browserCfg = {};     var ua = window.navigator.userAgent;     if (ua.indexOf("MSIE")>=1){       browserCfg.ie = true;     }else if(ua.indexOf("Firefox")>=1){       browserCfg.firefox = true;     }else if(ua.indexOf("Chrome")>=1){       browserCfg.chrome = true;     }     function checkfile(){       try{         var obj_file = document.getElementById("fileuploade");         if(obj_file.value==""){           alert("请先选择上传文件");           return;         }         var filesize = 0;         if(browserCfg.firefox || browserCfg.chrome ){           filesize = obj_file.files[0].size;         }else if(browserCfg.ie){           var obj_img = document.getElementById('tempimg');           obj_img.dynsrc=obj_file.value;           filesize = obj_img.fileSize;         }else{           alert(tipMsg);         return;         }         if(filesize==-1){           alert(tipMsg);           return;         }else if(filesize>maxsize){           alert(errMsg);           return;         }else{           alert("文件大小符合要求");           return;         }       }catch(e){         alert(e);       }     }   </script> </html> 

以上就是小编为大家带来的真正好用的js验证上传文件大小的简单方法全部内容了,希望大家多多支持武林网~

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表