Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Domanda Su FileUpload

  1. #1

    Domanda Su FileUpload

    Salve ragazzi, sto utilizzando il controllo FileUpload per effettuare l'upload di file sul server.
    Ho notato però che appena si clicca sul pulsante per far partire l'upload non vi è alcun caricamento della pagina finchè l'upload nn è terminato, questo nn mi permette di far visualizzare ad esempio un messaggio di attesa (per esempio in una label) o qualcos'altro.

    Quello che vorrei è (se possibile), appena clicco sul pulsante per l'upload, che mi visualizzi un messaggio tipo "trasferimento in corso...".

    Come posso fare?

    Grazie. Gianni

  2. #2
    perche' il controllo fileupload agisce in maniera sincrona. Una volta avviata una operazione non va avanti finche' l'operazione non è finita. Se vuoi che si comporti diversamente devi scrivere codice che operi in maniera asincrona (es. usando ajax). Se guadi in giro cercando asynchronous file upload troverai molto materiale per iniziarti a chiarire le idee.
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Per fare questo basta un semplice javascript (e non so neanche se con ajax si possa :master: )
    basta mettere un gif animato per esempio sotto il pulsante di upload, con stile nascosto.
    Quando si verifica l'evento submit del form si rende visibile il gif e si disabilita il pulsante.

    Dato che è un problema javascript, non vado sullo specifico (c'è un forum apposito) ma, come si scrive lo javascript è affare del server.
    A solo titolo di esempio, questo è un modo:

    codice:
    Protected Sub form1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Init
    	Dim frm As HtmlForm = DirectCast(sender, HtmlForm)
    	frm.Attributes.Add("onsubmit", "window.setTimeout(function(){disabilita_pagina(50);$('div_readonly').style.display='';var wh = ClientSize();var w = wh.width;var h = wh.height;$(""div_readonly"").style.top = Math.round((h -50)/2) + ""px"";$(""div_readonly"").style.left = Math.round((w -250)/2) + ""px"";}, 1);")
    
    End Sub
    Non voglio discutere su questo esempio, però basta sostituire la funzione con qualcosa del genere:

    document.getElementById("gif_prego_attendere").sty le.display = "";

    Pietro

  4. #4
    Originariamente inviato da pietro09
    e non so neanche se con ajax si possa
    con ajax o comunque usando thread, delegati e IAsyncResult
    puoi interrogare il server per vedere a che punto e' una certa operazione. Non credo esista un controllo ajax.net pronto per l'uso quindi bisogna scrivere un po' di codice.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da riccardone
    con ajax o comunque usando thread, delegati e IAsyncResult
    puoi interrogare il server per vedere a che punto e' una certa operazione. Non credo esista un controllo ajax.net pronto per l'uso quindi bisogna scrivere un po' di codice.
    l'unico metodo che ho visto usare è quello che fa uso degli iframe
    Pietro

  6. #6
    Cercando in giro, si trova poca roba. E' una domanda frequente. Se solo si avesse un controllo lato server che indichi la percentuale dell'upload in corso si potrebbe interrogare o comunque avere il risultato una volta arrivato alla fine. Forse il problema e' che non e' possibile per come e' fatto il protocollo e cosi ho trovato esempi che stabilito arbitrariamente un certo tempo alla fine di questo se il file e' ok restituisco un certo risultato altrimenti danno errore.
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: in fondo l'amico gianni_ITA chiedeva qualcosa di semplice, tipo far vedere un messaggio di attesa...
    Pietro

  8. #8
    disabilita_pagina(50)
    disabilita il pulsante per un certo tempo?
    Saluti a tutti
    Riccardo

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da riccardone
    disabilita_pagina(50)
    disabilita il pulsante per un certo tempo?
    mette un div sopra tutto (z-index alto) con opacità 50% (semitrasparente).
    Questo inibisce il click su ogni elemento. E sopra, centrato sulla pagina, un div con una gif animata.
    E' la moda attuale, anche se il risultato in fondo lascia il tempo che trova
    Pietro

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ho provato così (e questo me lo conservo )

    ho notato che nel server si scatena pure l'evento Button1_Click


    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
    <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function Button2_onclick() 
    {
        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false));
        if(Page_IsValid)
        {
            document.getElementById("Label1").style.display = "";
            //document.getElementById("Button1").click();
            document.getElementById("Button2").disabled = true;
            document.getElementById("__EVENTTARGET").value = "Button1";
            document.getElementById("form1").submit();
        }
    }
    
    // ]]>
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:FileUpload ID="FileUpload1" runat="server" onkeydown="this.blur();" />
    
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="FileUpload1" ErrorMessage="Il campo non può essere vuoto"></asp:RequiredFieldValidator>
    
            
    
            <asp:Button ID="Button1" runat="server" Text="Upload" style="display:none;" />
            <input id="Button2" type="button" value="Upload" onclick="return Button2_onclick()" />
            
    
            
    
            <asp:Label ID="Label1" runat="server" Text="Prego attendere: sto spedendo il file..." style="display:none;"></asp:Label>
    
        </form>
    </body>
    </html>
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.