JSファイルサイズ判断の実現コード

6359 ワード

方法一、ActiveXコントロールを利用して実現する:
 
  
<br>function getFileSize(filePath) <br>{ <br>var fso = new ActiveXObject("Scripting.FileSystemObject"); <br>alert(" :"+fso.GetFile(filePath).size); <br>} <br>



この方法はIEで使えますが、足りないところは安全のヒントがあります.ファイル名をhttaに変更すると安全のヒントを遮断します.
方法二、dynsrc属性を利用する:
 
  
<br>function getFileSize(filePath) <br>{ <br>var image=new Image(); <br>image.dynsrc=filePath; <br>alert(image.fileSize); <br>} <br>



この方法はIE 6で使用でき、IE 7,IE 8,Firefox,chromeでは使用できない.
方法3:
 
  
<br>var ImgObj=new Image(); // <br>var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"// <br>var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg// <br>// <br>var AllowExt=".jpg|.gif|.doc|.txt|" // ? "|" <br>//var AllowExt=0 <br>var AllowImgFileSize=70; // 0 :KB <br>var AllowImgWidth=500; // ? :px( ) <br>var AllowImgHeight=500; // ? :px( ) <br>HasChecked=false; <br>function CheckProperty(obj) // <br>{ <br>FileObj=obj; <br>if(ErrMsg!="") // <br>{ <br>ShowMsg(ErrMsg,false); <br>return false; // <br>} <br>if(ImgObj.readyState!="complete") // <br>{ <br>setTimeout("CheckProperty(FileObj)",500); <br>return false; <br>} <br>ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;// <br>ImgWidth=ImgObj.width // <br>ImgHeight=ImgObj.height; // <br>FileMsg="
:"+ImgWidth+"*"+ImgHeight+"px"; <br>FileMsg=FileMsg+"
:"+ImgFileSize+"Kb"; <br>FileMsg=FileMsg+"
:"+FileExt; <br>if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth) <br>ErrMsg=ErrMsg+"
。 "+AllowImgWidth+"px , "+ImgWidth+"px"; <br>if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight) <br>ErrMsg=ErrMsg+"
。 "+AllowImgHeight+"px , "+ImgHeight+"px"; <br>if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize) <br>ErrMsg=ErrMsg+"
。 "+AllowImgFileSize+"KB , "+ImgFileSize+"KB"; <br>if(ErrMsg!="") <br>ShowMsg(ErrMsg,false); <br>else <br>ShowMsg(FileMsg,true); <br>} <br>ImgObj.onerror=function(){ErrMsg='
!'} <br>function ShowMsg(msg,tf) // tf=true tf=false msg- <br>{ <br>msg=msg.replace("
","<li>"); <br>msg=msg.replace(/
/gi,"<li>"); <br>if(!tf) <br>{ <br>document.all.UploadButton.disabled=true; <br>FileObj.outerHTML=FileObj.outerHTML; <br>MsgList.innerHTML=msg; <br>HasChecked=false; <br>} <br>else <br>{ <br>document.all.UploadButton.disabled=false; <br>if(IsImg) <br>PreviewImg.innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>" <br>else <br>PreviewImg.innerHTML=" "; <br>MsgList.innerHTML=msg; <br>HasChecked=true; <br>} <br>} <br>function CheckExt(obj) <br>{ <br>ErrMsg=""; <br>FileMsg=""; <br>FileObj=obj; <br>IsImg=false; <br>HasChecked=false; <br>PreviewImg.innerHTML=" "; <br>if(obj.value=="")return false; <br>MsgList.innerHTML=" ..."; <br>document.all.UploadButton.disabled=true; <br>FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase(); <br>if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) // <br>{ <br>ErrMsg="
。 "+AllowExt+" , "+FileExt; <br>ShowMsg(ErrMsg,false); <br>return false; <br>} <br>if(AllImgExt.indexOf(FileExt+"|")!=-1) // , <br>{ <br>IsImg=true; <br>ImgObj.src=obj.value; <br>CheckProperty(obj); <br>return false; <br>} <br>else <br>{ <br>FileMsg="
:"+FileExt; <br>ShowMsg(FileMsg,true); <br>} <br>} <br>function SwitchUpType(tf) <br>{ <br>if(tf) <br>str='<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">' <br>else <br>str='<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">' <br>document.all.file1.outerHTML=str; <br>document.all.UploadButton.disabled=true; <br>MsgList.innerHTML=""; <br>} <br>










IEでは、FireFox、chromeはすべて使えますが、画像ファイルのサイズだけを判断します.