Die Validierung von Datei-Upload - Jquery-und "Accept" - Attribut
Bin ich über ein Formular eine Datei hochladen. Ich will nur PDF-Dateien hochgeladen werden. Das ist mein code:
Einem Eingabefeld kann der Benutzer wählen Sie eine Datei:
@Html.FileBox(m => m.FileName, new { id = "FileName", accept = "application/pdf" })
und einen Ort, um die Fehlermeldung(en):
@Html.ValidationMessageFor(m=>m.FileName)
Den generierten code für das Eingabefeld ist:
<input id="FileName" type="file" name="FileName" data-val-required="The File Name field is required." data-val-length-max="512" data-val-length="The field File Name must be a string with a maximum length of 512." data-val="true" accept="application/pdf">
Nun, auch wenn ich eine PDF-Datei, bekomme ich eine Fehlermeldung Please enter a value with a valid extension.
Ich bin mit MVC 3 und dezent jquery für die Validierung des Formulars.
- haben Sie dieses herausgefunden? Ich habe das gleiche problem. Ich muss akzeptieren mehrere Arten ("image/gif,image/png,image/jpeg"), in meinem Fall.
- Nein habe ich nicht. Ich hatte zu entfernen die "akzeptieren" - Attribut. Kann Jquery Validierung unterstützt keine Validierung der MIME-Typ für "akzeptieren".
- Für Bild-Typen, es sollte nicht sein ein Problem. Haben Sie versucht, so etwas wie
accept="image/gif,image/jpeg"
? - ja. Ich hatte "image/gif,image/jpeg,image/png". Ich nahm sogar alle, aber ein mime-Typ und die Validierung würde verhindern, dass mir das hochladen etwas. Wenn ich entfernen Sie die "akzeptieren" - Attribut, es funktioniert gut. Ich denke, ich werde einfach ein resort zu überprüfen, nur auf server-Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den "akzeptieren" - Regel-Methode eingebaut jQuery Validierung nimmt Werte in einem format ähnlich "jpg|png".
Den "akzeptieren" HTML-Attribut hat ein format ähnlich "image/jpeg", "image/png".
Scheint es, dass die jQuery-Validierung und der HTML-standard sind nicht kompatibel in dieser Hinsicht.
Hier können Sie mehr Lesen über jQuery-Validierung der "akzeptieren" - Regel und die HTML5 - "akzeptieren" - Attribut.
Ich hatte das gleiche problem und musste greifen, um deaktivieren Sie die Validierung für das accept-Attribut vollständig. Ich fügte hinzu, die folgende Zeile auf meiner Seite und es hat geklappt:
Verändert Sie das Verhalten des "akzeptieren" - Methode mit der version 1.10.0. Anstelle der überprüfung der Datei-Endung sieht es nun bei den mime-Typ. Das alte Verhalten ist jetzt als die "extension" - Methode. So müssen Sie nur aktualisieren Sie Ihre version von jquery validation plugin und Sie sind fertig. Ich ersetzte meine aktuelle version 1.9.0 mit 1.11.0 und legen Sie gültige mime-Typen als accept-attribut. Es arbeitet jetzt wie erwartet:
Wenn man beide Formate als accept-Attribut sollte es funktionieren