2013-06-25 89 views
0

我希望在更改函數運行時獲取文件大小。我嘗試了更多,但什麼都不起作用。 我怎樣才能做到這一點感謝使用Extjs在上傳之前獲取文件大小'change function'

{ 
     xtype: 'filefield', 
     name: 'upfile[]', 
     buttonConfig: { 
      text: 'add' 
     }, 
     listeners: { 
       'change': function(f, value){ 
        alert(f.size); // not filesize 
       } 
     } 
    } 
+1

如果你想支持大多數的瀏覽器版本,因爲JavaScript不能夠訪問這些信息,這是不可能的。最好的解決方法是自動啓動上傳並在您擁有標題後立即中止。現在你有文件大小。只需將其發送回請求的答案 – sra

+3

您好@trungkien您可以參考鏈接http://www.sencha.com/forum/showthread.php?158445-How-can-i-get-the-size-of -the-file-before-upload – Hariharan

+0

我試過使用javascript(在http://i.ndigo.com.br/2012/01/javascipt-checking-the-file-size/或https://www.classle。 net/faq/check-file-size-using-javascript-upload)來獲取大小,但不能在某些瀏覽器或舊版本瀏覽器上工作(例如:ie 9無法正常工作...)。也許Jquery在http://forum.jquery.com/topic/checking-file-size-before-uploading-it做得更好,但Jquery我只是檢查一下瀏覽器,不知道將其嵌入extjs :( – DeLe

回答

0

有可能與ActiveX Objects

function getSize() 
{ 
    var myFSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var filepath = document.upload.file.value; 
    var thefile = myFSO.getFile(filepath); 
    var size = thefile.size; 
    alert(size + " bytes"); 
} 

請參考以下鏈接

http://www.sencha.com/forum/showthread.php?158445-How-can-i-get-the-size-of-the-file-before-upload

+0

它在某些瀏覽器中不起作用,我只是在Chrome版本27.0.1453.116 m中測試 - 不工作,Firefox 21.0 - 不工作:( – DeLe

+1

@trungkien嗯,那是因爲ActiveX對象是微軟的東西,因此只存在於InternetExplorer內) – sra

+0

同意@sra。 – Hariharan

1
  1. 唯一的通用的解決方案是將文件上傳到服務器,並獲得文件大小重新

  2. 的現代瀏覽器( IE10和所有其他),您可以使用HTML5 FileReader API

    https://developer.mozilla.org/en-US/docs/Web/API/FileReader

  3. 爲IE 9以下可以使用哈里哈蘭的解決方案

+1

是的同意@Neil McGuigan,因爲我給了一個upvote。 – Hariharan

相關問題