2013-07-26 38 views
0

我需要防止用戶上傳大圖像到服務器,並希望使用簡單的輸入類型=「文件」。使用下面的jQuery,當this.files超過1048000時,如何重置「輸入文件」?jQuery:如何重置此類型=「文件」

$('.image-file').bind('change', function() { 
    if (this.files[0].size > 1048000) { 
    alert('Image size can not more than 1Mb.'); 
    // going to reset the file    
    } 
}); 

<input type="file" name="photo[]" class="image-file"> 
<input type="file" name="photo[]" class="image-file"> 
<input type="file" name="photo[]" class="image-file"> 
+0

請務必檢查所有用戶提交的數據服務器端。 – Hidde

+0

您無法使用JavaScript測量文件上傳大小,必須先使用服務器端語言在服務器端提交。你使用什麼服務器端語言? PHP?蟒蛇? Perl的?什麼? –

+1

jQuery真的有必要嗎?用普通的香草JS,你可以非常明智地做'this.value = null;'。 – BalusC

回答

2

請試試以下代碼。但要獲得文件的大小,你可以使用服務器端的代碼,這將返回文件的大小..

$('#form_id').each(function(){ 
    this.reset(); 
}); 


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


下面的代碼是使用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]); 

}

+0

this.reset(); doesn; t work but this.value = null;工作 – Peter

+0

請看看鏈接。它的一個工作演示http://jsfiddle.net/shadow2burn/hPytd/174/ –

相關問題