jQuery

2011-01-02 11 views
5

kullanarak geri dönüş yapmadan dosya türünün INPUT türünün istemci doğrulaması İstemci tarafından, formun gönderilebilmesi için önce bir dosyanın seçildiğini kontrol etmek istiyorum.jQuery

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm("Upload", "Files", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     { 
      <input id="File" name="File" type="file" size="80" /> 
      <input type="submit" name="name" value="Upload" />  
     } 

Bu form şu anda doğrulama için geri gönderme yapıyor. Neyin yanlış gidiyor?

cevap

3

"Dosya" türü girdisi, güvenlik açısından hassas bir denetimdir ve DOM aracılığıyla betik değildir. Bir sayfaya vurmayı düşünün ve bu sayfa kontrolün değerini hassas bir dosyanın iyi bilinen bir yerine ayarlar ve otomatik olarak formu gönderir. Bu kontrolün son kez betimlenmesi 1995 ya da 1996 ile ilgili olurdu. Bu, internet güvenliği için çok saçma bir zamandı.

+0

Evet ama kullanılabilirlik kazanır (şaka) – nick

+1

Bu yanlıştır. Bir * 'için dosya adını alabilir ve boş olup olmadığını veya geçerli bir uzantıya sahip olduğunu görebilirsiniz. Bunu sadece ayarlayamaz veya dosyaya yerel yolu alamazsınız. –

8

@xOn, dosya elemanını değiştirememe konusunda haklıdır, ancak doğrulayabilmeniz gerekir.

Alanın bir değer ve gönderilmeden önce doğru uzantı olduğundan emin olmak için göze batmayan doğrulama kullanan bir dosya öğesi.

<input type="file" 
    id="myImg" 
    name="logo" 
    data-val="true" 
    data-val-required="Oops, select the logo first!" 
    accept="jpg|jpeg" 
    data-val-accept="Sorry, we only accept jpegs." /> 
0
<input type="file" name="path" required> 

bu html5 içinde benim için çalışıyor