2011-02-15 58 views
1

我正在尋找一個簡單易用的客戶端上傳驗證程序。它不需要處理上傳本身(這可以通過POST和服務器端腳本來很好地處理)。客戶端文件上傳驗證(不上傳)

我已經研究了一點點,顯然不能用js來完成。其他解決方案推薦使用activeX,這在不同的瀏覽器上似乎有不一致的結果。

Flash是一個明顯的喜愛,但閃存解決方案,如UPLOADIFYSWFUploader似乎與ajax上傳和進度條捆綁在一起。這很可能會破壞我現有的表單和服務器端處理腳本,所以我只是尋找一種簡單的機制來驗證文件是模糊還是文件輸入更改,還是提交表單。但是我不希望驗證程序除了提供驗證之外不要執行其他任何操作,以便現有的上載腳本能夠繼續正常工作。

這是不是要求?!

謝謝。

回答

0

這必須是第一個工作代碼 在Chrome Safari瀏覽器firefox歌劇和當然,探險家測試。 客戶端圖像(類型/大小)上傳驗證

<form><fieldset><legend>Image upload</legend> 
<input type=file onchange="getImg(this,500,'jpeg|png')"> 
</fieldset> 
</form> 

<script> 

function getImg(input,max,accepted){ 
    var upImg=new Image(),test,size,msg=input.form; 
    msg=msg.elements[0].children[0]; 

    return input.files?validate(): 
    (upImg.src=input.value,upImg.onerror=upImg.onload=validate); 

     "author: b.b. Troy III p.a.e"; 

    function validate(){ 
     test=(input.files?input.files[0]:upImg); 
     size=(test.size||test.fileSize)/1024; 
     mime=(test.type||test.mimeType); 

    mime.match(RegExp(accepted,'i'))? 
    size>max?(input.form.reset(),msg.innerHTML=max+"KB Exceeded!"): 
    msg.innerHTML="Upload ready...":  
    (input.form.reset(),msg.innerHTML=accepted+" file type(s) only!") 
    } 
} 

</script> 

</body> 
</html> 
0
<form><fieldset><legend>Image upload</legend> 
<input type=file onchange="getImg(this,500,'jpeg|png')"> 
</fieldset> 
</form> 

<script> 

function getImg(input,max,accepted){ 
    var upImg=new Image(),test,size,msg=input.form; 
    msg=msg.elements[0].children[0]; 

    return input.files?validate(): 
    (upImg.src=input.value,upImg.onerror=upImg.onload=validate); 

     "author: b.b. Troy III p.a.e"; 

    function validate(){ 
     test=(input.files?input.files[0]:upImg); 
     size=(test.size||test.fileSize)/1024; 
     mime=(test.type||test.mimeType); 

    mime.match(RegExp(accepted,'i'))? 
    size>max?(input.form.reset(),msg.innerHTML=max+"KB Exceeded!"): 
    msg.innerHTML="Upload ready...":  
    (input.form.reset(),msg.innerHTML=accepted+" file type(s) only!") 
    } 
} 

</script> 
+0

你能否給個說法? – 2012-10-28 19:13:31