JSファイルサイズ判断の実現コード
6359 ワード
方法一、ActiveXコントロールを利用して実現する:
方法二、dynsrc属性を利用する:
方法3:
<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はすべて使えますが、画像ファイルのサイズだけを判断します.