2012-04-06 11 views
1

Ich habe ein ASP-Fileupload-Steuerelement auf meiner Seite. Wie validiert man die ausgewählte Datei auf der Clientseite? Validierungsregeln: 1. Datei muss jpeg, png, bmp oder gif sein. 2. Dateigröße muss innerhalb von 25 KB und 2 MB liegen. bitte helfen. danke.
Ich habe den folgenden Code versucht die Erweiterungvalidieren ASP Fileupload-Steuerelement Client-Seite

<asp:FileUpload ID="FileUpload2" runat="server"/>      
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ValidateFileUpload" ErrorMessage="Invalid file type. Only .gif, .jpg, .png, .bmp and .jpeg are allowed." ControlToValidate="FileUpload2" ValidationGroup="update">&nbsp;</asp:CustomValidator> 
<script language="javascript" type="text/javascript"> 
    function ValidateFileUpload(Source, args) { 
     var fuData = document.getElementById('<%= fuData.ClientID %>'); 
     var FileUploadPath = fuData.value; 

     if (FileUploadPath == '') { 
      // There is no file selected 
      args.IsValid = false; 
     } 
     else { 
      var Extension = FileUploadPath.substring(FileUploadPath.lastIndexOf('.') + 1).toLowerCase(); 

      if (Extension == "jpg" || Extension == "jpeg" || Extension == "png" || Extension == "gif" || Extension == "bmp") { 
       args.IsValid = true; // Valid file type 
      } 
      else { 
       args.IsValid = false; // Not valid file type 
      } 
     } 
    } 
</script> 
+0

Ich habe meinen Beitrag mit meinem Code bearbeitet. bitte besuche. –

+0

Für Dateityp-Validierung finden Sie unter Link: http://www.aspsnippets.com/Articles/ASPNet-FileUpload-File-Extension-Validation.aspx – Vijjendra

Antwort

6

Sie können nicht bestimmen die Größe der Datei in dem Dateieingabeelement über Client-seitiges Script ausgewählt zu validieren. Um die Größe der Datei zu bestimmen, muss man Lesezugriff auf die Datei haben. Wie Sie sich vorstellen können, wäre es eine "wirklich schlechte Idee", JavaScript zu erlauben, Dateien auf Ihrem Computer zu lesen. ™

Ich sehe oft diese Art von Frage und glaube, dass es einige Verwirrung darüber gibt, was das Dateieingabeelement tatsächlich tut. Wenn der Benutzer eine Datei auswählt, werden die Dateibytes nicht in dieses Element "geladen", so dass sie zum Lesen verfügbar sind. Stattdessen gibt die Eingabe eine Referenz an den Speicherort der Datei an, damit der Browser weiß, wenn das Formular veröffentlicht wird, die Datei zu codieren und sie mit dem POST zu senden. Dieser Prozess ist für den Browser intern und wird dem Client nicht so zur Verfügung gestellt, dass er vom Skript genutzt werden kann.

Wenn Sie die Überprüfung der Dateigröße durchführen müssen, sollten Sie dies auf dem Server tun, auf den Sie Zugriff auf die tatsächlichen Dateibytes haben. Wenn Sie Bedenken haben, dass Ihre Website mit sehr großen Dateien "überflutet" wird, können Sie die maximal zulässige POST-Größe angeben, indem Sie Ihre IIS-Instanz konfigurieren.

+0

Vielen Dank für das Löschen meiner Idee über die Dateieingabe. –

2

Sie können Ajax Control Tool Kit ausprobieren. Es verfügt über ein eigenes Steuerelement zum Hochladen von Dateien. Seine viel coolere

Verwandte Themen