asp.net FileUpload-Ereignis, nachdem die Auswahl getroffen wurde und bevor sie zum Hochladen gesendet wird

8

Ich möchte die Größe der Datei anzeigen, die über die Schaltfläche Durchsuchen des FileUpload-Steuerelements ausgewählt wurde.

Idealerweise wird dieser Wert sofort angezeigt, nachdem der Benutzer die Datei ausgewählt hat, aber BEVOR die Schaltfläche "Datei hochladen" angeklickt wird.

Ich habe und auf einem Webformular. Der Button sieht so aus:

%Vor%

Das onclick-Ereignis für die Schaltflächensteuerung führt zu einem Postback und die Datei wird hochgeladen.

Ich weiß, wie ich die Größe der Datei ermitteln kann, aber nicht bevor die Schaltfläche Datei hochladen angeklickt wird und ein Postback auftritt.

Gibt es ein Ereignis, das dem FileUpload-Websteuerelement zugeordnet ist, das das Formular (d. h. Postback) ohne das Klicken auf die Schaltfläche senden konnte?

Die ganze Absicht ist, dass ich dem Benutzer ein Gefühl geben möchte, wie lange der Upload dauern kann ... setze eine andere Erwartung für eine 10-MB-Datei als für eine 2-KB-Datei usw.).

    
John Adams 06.05.2009, 18:03
quelle

1 Antwort

14

Das Problem ist, dass es keine Möglichkeit gibt, die Größe der Datei auf der Client-Seite herauszufinden, ohne sie zurück zu schreiben. Sie könnten Ajax verwenden, aber das würde bedeuten, dass die Datei zuerst hochgeladen wird.

Dies kann nur mit einem ActiveX -Steuerelement erfolgen. Ich würde empfehlen, so etwas wie den Silverlight FileUploader zu verwenden, da er die Größe der Datei vor dem Zurücksetzen erhält und hat sogar eine schöne Fortschrittsanzeige.

UPDATE: Wenn Sie eine Postback- oder Ajax-Anfrage auslösen möchten, nachdem der Benutzer auf browse geklickt hat, ist das clientseitige Ereignis "onchange". Hier ist ein Beispiel für die Verwendung des Onchange-Ereignisses.

%Vor%

Sie könnten die onchange haben, einen Ajax auslösen, um die Datei zuerst hochzuladen und dann ein Etikett mit der Größe der Datei zu aktualisieren. Das Problem dabei ist, dass es, wenn es sich um eine große Datei handelt, den Zweck besiegt, den Benutzer vorher wissen zu lassen, dass es lange dauern wird.

Hier ist eine weitere Empfehlung: Es gibt ein jQuery-Plugin, das Flash verwendet, um die Größe der Datei vor dem Hochladen zu bestimmen, und es ist sehr einfach zu verwenden. Sehen Sie sich jQuery Uploadify

an     
Jose Basilio 06.05.2009, 18:11
quelle

Tags und Links