2010-07-28 5 views
6

Ich möchte einschränken, was sie im Datei-Upload-Dialog sehen, der standardmäßig auf "Alle Dateien" eingestellt ist . Ich verstehe, wie man validiert, dass sie nur einen bestimmten Dateityp hochgeladen haben, das ist hier nicht die Frage. Ich würde gerne wissen, wie der Dateityp im Dateiauswahldialog voreingestellt wird.Wie kann ich den Dateityp im Dateisuchmenü eines AsyncFileUpload im ASP.NET AJAX Control Toolkit einschränken?

Gibt es eine Möglichkeit, dies in "Nur PNG" oder "* .png" zu ändern?

Dies verwendet AsyncFileUpload im ASP.NET AJAX Control Toolkit.

Antwort

2

Die aktuelle Version des Ajax Control Toolkits hat diese Option nicht.

Aber das gute neue ist, dass Sie das source code bekommen konnten und eine Eigenschaft addieren, die dieses behandelt.

3

Sie können das OnClientUploadStart Eigenschaft auf der Steuerung eine JavaScript-Funktion für die Validierung schießen, wie folgt aus:

<cc1:AsyncFileUpload ID="FileUpload" runat="server" 
    OnClientUploadStarted="checkExtension" /> 

Dann dieses Skript auf Ihrer Seite oder enthalten:

function checkExtension(sender, args) { 
    var ext = args.get_fileName().substring(filename.lastIndexOf(".") + 1); 
    if (ext != 'png') { 
    args.set_cancel(true);       //cancel upload 
    args.set_errorMessage("File type must be .png"); //set error message 
    return false; 
    } 
    return true; 
} 

In dieser In diesem Fall verwenden wir nur verschiedene Bits der clientseitigen API, um die Erweiterung zu erhalten/zu überprüfen. Geben Sie false zurück und stoppen Sie das Hochladen/Setzen der Fehlermeldung (optional), wenn sie ungültig ist.

+2

Dies stoppt das Laden, sondern wirft einen hässlichen Fehler "nicht unterstützt", da set_cancel nicht existiert. Dies ist der Lösung sehr nahe, muss jedoch eine benutzerdefinierte Ausnahme auslösen, die keine _ _-Funktionen aufruft. – daniloquio

10

Dieser arbeitet für mich (Danke DavRob für die Inspiration).

<cc1:AsyncFileUpload ID="FileUpload" runat="server" 
    OnClientUploadStarted="AssemblyFileUpload_Started" /> 

<script> 
function AssemblyFileUpload_Started(sender, args) { 
    var filename = args.get_fileName(); 
    var ext = filename.substring(filename.lastIndexOf(".") + 1); 
    if (ext != 'png') { 
     throw { 
      name:  "Invalid File Type", 
      level:  "Error", 
      message:  "Invalid File Type (Only .png)", 
      htmlMessage: "Invalid File Type (Only .png)" 
     } 
     return false; 
    } 
    return true; 
} 
</script> 
+1

+1 Das funktioniert tatsächlich, danke. – daniloquio

+1

Es funktioniert, aber es wird eine Warnung auf dem Bildschirm ausgelöst, es sei denn, Sie das Ereignis OnClientUploadError abonnieren und nichts tun. –