2012-05-24 3 views
3

Internet Explorer 용 ActiveXObject를 사용했지만 작동하지 않습니다. js에서는 다른 브라우저의 파일 크기가 있지만 IE 브라우저에서는 파일 크기를 가져올 수 없습니다. 나는 이것을 위해 다음 코드를 사용했다. -javascript 또는 Jquery를 사용하여 IE 브라우저의 파일 크기를 얻는 방법은 무엇입니까?

if ($.browser.msie==true) 
{ 
    var fileSystemObject = new ActiveXObject("Scripting.FileSystemObject"); 
    var path = document.uploadDocumentForm.documentUpload.value; 
    var file = fileSystemObject.getFile(path); 
    var size = file.size; 
    alert(size); 

/* var a = document.getElementById(fileId).value; 
      $('#myImage').attr('src',a); 
      var imgbytes = document.getElementById('myImage').fileSize;  
      alert("here"+imgbytes); 
      var imgkbytes = Math.round(parseInt(imgbytes)/1024);  */ 

} 
else 
{ 
       var fileInput = $("#"+fileId)[0]; 
       var imgbytes = fileInput.files[0].size; 
       var imgkbytes = Math.round(parseInt(imgbytes)/(1024)); 
} 

IE 브라우저 용 파일 크기를 얻는 사람이 누구에게 도움을 줄 수 있습니까? 나는 모든 아이디어를 다 통과했지만 IE 브라우저에서는 파일을 얻을 수 없습니다. 이 아이디어 또는 코드를 제공하십시오.

+0

fileinput의 값은 * fakepath *입니다. FileSystem 객체를 가져올 수 있다고 생각하지 않습니다 ... – Bergi

답변

0

제안하는 작품은 다음과 같습니다.

<script type="text/javascript"> 
function AlertFilesize(){ 
    if(window.ActiveXObject){ 
     var fso = new ActiveXObject("Scripting.FileSystemObject"); 
     var filepath = document.getElementById('fileInput').value; 
     var thefile = fso.getFile(filepath); 
     var sizeinbytes = thefile.size; 
    }else{ 
     var sizeinbytes = document.getElementById('fileInput').files[0].size; 
    } 

    var fSExt = new Array('Bytes', 'KB', 'MB', 'GB'); 
    fSize = sizeinbytes; i=0;while(fSize>900){fSize/=1024;i++;} 

    alert((Math.round(fSize*100)/100)+' '+fSExt[i]); 
} 
</script> 

<input id="fileInput" type="file" onchange="AlertFilesize();" /> 

다른 대답 Get file size before uploading에서 가져 왔습니다.