asp.net FileUpload evento dopo la scelta fatta e prima di inviare per l’upload

Vorrei visualizzare la dimensione del file che è stato scelto tramite il pulsante Sfoglia di controllo FileUpload.

Idealmente, questo valore viene visualizzato immediatamente dopo che l’utente sceglie il file, ma PRIMA di “Upload File” Pulsante.

Ho e su un webform. Il Pulsante che assomiglia a questo:

<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>         

L’evento onclick del pulsante di controllo dei risultati in un postback e il file viene caricato.

So come ottenere la dimensione del file, ma non prima che il pulsante Carica File selezionato e di un postback si verifica.

C’è un evento associato con il FileUpload controllo web che potrebbero inviare il form (cioè postback) senza il clic di un pulsante?

Tutta l’intento è che voglio dare all’utente una sensazione per quanto tempo il caricamento potrebbe richiedere una diversa attesa per un file di 10mb che per un 2kb file, etc.).

InformationsquelleAutor John Adams | 2009-05-06

 

One Reply
  1. 14

    Il problema è che non c’è modo di scoprire la dimensione del file lato client senza postare. Si potrebbe utilizzare Ajax, ma che significherebbe caricare il file prima comunque.

    Questo può essere fatto solo utilizzando un ActiveX controllo di qualche tipo. Mi consiglia di utilizzare qualcosa di simile a Silverlight FileUploader perché si ottiene la dimensione del file prima di postare e ha anche un bel indicatore di avanzamento.

    AGGIORNAMENTO: Se si desidera attivare un postback o Richiesta Ajax dopo che l’utente fa clic su sfoglia, il lato client evento “onchange”. Ecco un esempio di come utilizzare l’evento onchange.

    <asp:FileUpload runat="server" 
        onchange="alert('you selected the file: '+ this.value)" />

    Si potrebbe avere il onchange, di attivare un ajax per caricare prima il file e poi aggiornare da un’etichetta che mostra la dimensione del file. Il problema con questo è che se si tratta di un file di grandi dimensioni, che sconfigge lo scopo di permettere all’utente di sapere prima mano che ci vorrà un lungo periodo di tempo.

    Ecco un’altra raccomandazione: non C’è un plugin per jQuery che utilizza il flash per determinare la dimensione del file prima di caricare ed è molto facile da usare. Check it out a jQuery Uploadify

    • Mi chiedevo se ci potesse essere un evento associato con il FileUpload “processo di scelta” (cioè clic su “Sfoglia” e fare una selezione che popola la textbox porzione di controllo FileUpload. Allora, forse, tale evento potrebbe inviare il modulo per la prima volta utilizzando Javascript. Una seconda presentare in caso di Upload Pulsante è stato premuto. Siete a conoscenza di un evento del genere e se sì, sarebbe l’accesso al FileUpload1.PostedFile.ContentLength proprietà?
    • Grazie per queste buone idee. Ho già guardato nel controllo Silverlight. In Visual Studio 2005, non c’è nessun evento onchange per <asp:FileUpload>. Non ho controllato se VS2008 sostiene che.
    • Capisco ciò che vuoi dire..ignorare la mancanza di questa in intellisense / modello di oggetto del controllo. Ecco il codice HTML: <input type=”file” name=”FileUpload1″ id=”FileUpload1″ onchange=”alert(‘hai selezionato il file: ‘+e.valore)”, ma l’avviso non si innesca.
    • Grazie Jose. Mi si avvicinò con qualcosa di simile a questo: <script type=”text/javascript”> funzione submitform() { document.form1.submit(); } </script> <asp:FileUpload ID=”FileUpload1″ runat=”server” Width=”848px” onchange=”submitform()” /> e quindi questo funziona nel Page_Load se (Pag.IsPostBack) lblFileSize.Testo = GetFileSize(FileUpload1.PostedFile.ContentLength);

Lascia un commento