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="開(kāi)始上傳" 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-09
javascript實(shí)現(xiàn)div的顯示和隱藏的小例子
這篇文章介紹了在JS中實(shí)現(xiàn)DIV顯示和隱藏的實(shí)例,需要的朋友可以參考一下2013-06-06
es6函數(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-08
Webpack4+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-04
IE不出現(xiàn)Flash激活框的小發(fā)現(xiàn)的js實(shí)現(xiàn)方法
IE不出現(xiàn)Flash激活框的小發(fā)現(xiàn)的js實(shí)現(xiàn)方法...2007-09-09
JavaScript實(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

