JS獲取文件大小方法小結(jié)
本文實(shí)例總結(jié)了JS獲取文件大小方法。分享給大家供大家參考,具體如下:
方法一,利用ActiveX控件實(shí)現(xiàn):
<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>
這個(gè)方法在IE可以用,不足之處會(huì)有安全提示,把文件名改為.hta則會(huì)屏蔽掉安全提示。
方法二,利用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>
這個(gè)方法在IE6可以用,在IE7,IE8,F(xiàn)irefox,chrome不能用。
方法三,利用img的fileSize:
代碼:
<script language=javascript> var ImgObj=new Image(); //建立一個(gè)圖像對(duì)象 var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"http://全部圖片格式類型 var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局變量 圖片相關(guān)屬性 //以下為限制變量 var AllowExt=".jpg|.gif|.doc|.txt|" //允許上傳的文件類型 ?為無(wú)限制 每個(gè)擴(kuò)展名后邊要加一個(gè)"|" 小寫字母表示 //var AllowExt=0 var AllowImgFileSize=70; //允許上傳圖片文件的大小 0為無(wú)限制 單位:KB var AllowImgWidth=500; //允許上傳的圖片的寬度 ?為無(wú)限制 單位:px(像素) var AllowImgHeight=500; //允許上傳的圖片的高度 ?為無(wú)限制 單位:px(像素) HasChecked=false; function CheckProperty(obj) //檢測(cè)圖像屬性 { FileObj=obj; if(ErrMsg!="") //檢測(cè)是否為正確的圖像文件 返回出錯(cuò)信息并重置 { ShowMsg(ErrMsg,false); return false; //返回 } if(ImgObj.readyState!="complete") //如果圖像是未加載完成進(jìn)行循環(huán)檢測(cè) { 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圖片文件擴(kuò)展名:"+FileExt; if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth) ErrMsg=ErrMsg+"\n圖片寬度超過(guò)限制。請(qǐng)上傳寬度小于"+AllowImgWidth+"px的文件,當(dāng)前圖片寬度為"+ImgWidth+"px"; if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight) ErrMsg=ErrMsg+"\n圖片高度超過(guò)限制。請(qǐng)上傳高度小于"+AllowImgHeight+"px的文件,當(dāng)前圖片高度為"+ImgHeight+"px"; if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize) ErrMsg=ErrMsg+"\n圖片文件大小超過(guò)限制。請(qǐng)上傳小于"+AllowImgFileSize+"KB的文件,當(dāng)前文件大小為"+ImgFileSize+"KB"; if(ErrMsg!="") ShowMsg(ErrMsg,false); else ShowMsg(FileMsg,true); } ImgObj.onerror=function(){ErrMsg='\n圖片格式不正確或者圖片已損壞!'} function ShowMsg(msg,tf) //顯示提示信息 tf=true 顯示文件信息 tf=false 顯示錯(cuò)誤信息 msg-信息內(nèi)容 { 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="預(yù)覽區(qū)"; 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該文件類型不允許上傳。請(qǐng)上傳 "+AllowExt+" 類型的文件,當(dāng)前文件類型為"+FileExt; ShowMsg(ErrMsg,false); return false; } if(AllImgExt.indexOf(FileExt+"|")!=-1) //如果圖片文件,則進(jìn)行圖片信息處理 { IsImg=true; ImgObj.src=obj.value; CheckProperty(obj); return false; } else { FileMsg="\n文件擴(kuò)展名:"+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">圖片來(lái)源</font></legend> <input type="radio" name="radio1" checked onclick="SwitchUpType(true);">本地<input type="radio" name="radio1" onclick="SwitchUpType(false);">遠(yuǎn)程:<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">預(yù)覽區(qū)</td><td id="MsgList" valign="top"></td></tr></table> </div> </fieldset> </form>
在IE,F(xiàn)ireFox,chrome都可以用,不過(guò)只判斷圖片文件的大小。
附:js判斷文件格式及大小
//判斷照片大小 function getPhotoSize(obj){ photoExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//獲得文件后綴名 if(photoExt!='.jpg'){ alert("請(qǐng)上傳后綴名為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,請(qǐng)重新上傳!"); return false; } }
jsp頁(yè)面:
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- 客戶端js判斷文件類型和文件大小即限制上傳大小
- JS 文件大小判斷的實(shí)現(xiàn)代碼
- JavaScript檢測(cè)上傳文件大小的方法
- nodejs實(shí)現(xiàn)遍歷文件夾并統(tǒng)計(jì)文件大小
- js 判斷上傳文件大小及格式代碼
- javascript實(shí)現(xiàn)限制上傳文件大小
- js獲取上傳文件大小示例代碼
- javascript檢測(cè)(控制 )上傳文件大小
- 通過(guò)Java來(lái)測(cè)試JSON和Protocol Buffer的傳輸文件大小
- 使用Microsoft Ajax Minifier減小JavaScript文件大小的方法
- Javascript 使用ajax與C#獲取文件大小實(shí)例詳解
相關(guān)文章
JavaScript具有類似Lambda表達(dá)式編程能力的代碼(改進(jìn)版)
在之前的一篇博文中我介紹了一種方法可以讓JavaScript具有一種近似于Lambda表達(dá)式的編程能力——但是它有一些缺點(diǎn),其中妨礙它的使用的最主要的一條就是多了一層括號(hào),讓代碼變得難以閱讀。2010-09-09javascript實(shí)現(xiàn)div的顯示和隱藏的小例子
這篇文章介紹了在JS中實(shí)現(xiàn)DIV顯示和隱藏的實(shí)例,需要的朋友可以參考一下2013-06-06es6函數(shù)name屬性功能與用法實(shí)例分析
這篇文章主要介紹了es6函數(shù)name屬性,結(jié)合實(shí)例形式分析了es6函數(shù)name屬性基本原理、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04教你如何自定義百度分享插件以及bshare分享插件的分享按鈕
在項(xiàng)目中我們常用到百度分享插件或者bshare分享插件,雖然官方都有自定義按鈕的功能,但是畢竟還是只有少數(shù)幾種,我們?nèi)绾蝸?lái)制作有自己特色的分享按鈕呢?2014-06-06使用純前端JavaScript實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出方法過(guò)程詳解
這篇文章主要介紹了使用純前端JavaScript實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出方法過(guò)程詳解,文章通過(guò)示例代碼和圖文解析介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Webpack4+Babel7+ES6兼容IE8的實(shí)現(xiàn)
這篇文章主要介紹了Webpack4+Babel7+ES6兼容IE8的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04IE不出現(xiàn)Flash激活框的小發(fā)現(xiàn)的js實(shí)現(xiàn)方法
IE不出現(xiàn)Flash激活框的小發(fā)現(xiàn)的js實(shí)現(xiàn)方法...2007-09-09JavaScript實(shí)現(xiàn)生成GUID(全局統(tǒng)一標(biāo)識(shí)符)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)生成GUID(全局統(tǒng)一標(biāo)識(shí)符),本文寫成了一個(gè)GUID生成類,使用也非常方便,需要的朋友可以參考下2014-09-09利用location.hash實(shí)現(xiàn)跨域iframe自適應(yīng)
其他一些類似js跨域操作問(wèn)題也可以按這個(gè)思路去解決,需要的朋友可以測(cè)試下。2010-05-05