我们有时候在上传文件前要判断文件的大小,通常有以下两种方式:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <body> <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this)"> <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)"> </body> <script type="text/javascript"> function getFileSize(filePath) { var image=new Image(); image.dynsrc=filePath; title="downcc.com提示:点击查看" alert(image.fileSize); } function getFileSize(fileObj) { var image=new Image(); image.dynsrc=fileObj.value; var size = image.fileSize || fileObj.files[0].fileSize; if(size > 100000){ alert(size); } } </script> </html>
但是以上代码有一个问题,就是在给image.dynsrc赋值的时候,要有文件的操作权限,换句话说,IE7之后的版本为了提高安全性不允许浏览器对文件进行操作,故以上代码不实用。 以下代码通过调用ActiveX来进行文件的读取,需要启用ActiveX的部分功能。
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <script type="text/javascript"> function getFileSize(fileObj) { if (document.all) { window.oldOnError = window.onerror; window.onerror = function(err) { if (err.indexOf('utomation') != -1) { alert('No access to the file permissions.'); return true; } else return false; }; var fso = new ActiveXObject('Scripting.FileSystemObject'); var file = fso.GetFile(fileName); window.onerror = window.oldOnError; return file.Size; } } </script> <body> <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this)"> </body> </html>