Oggetto FileUpload asp net

lunedì 14 maggio 2012 - 13.06

trinity Profilo | Guru

Allora ragazzi ho creato una pagina web dove al suo interno ho messo un fileupload ed un button che mi esegue la procedura di upload dei file che seleziono..Adesso volevo mettere una progress di attesa che apparisse durante l'elaborazione, ho inserito pertanto uno scriptmanager, un updatepanel nel quale ho inserito l'oggetto fileupload ed il button ed infine esternamente all'updatepanel ho inserito una updateprogress...adesso ho letto in giro che l'oggetto FileUpload all'interno dell'updatepanel non funziona e per ovviare bisognava inserire in trigger che così ho fatto e funziona perfettamente..ma il problema è che la progress di attesa non si visualizza. posto il codice se mi potete aiutare

Ciao

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

infatti, l'oggetto FileUpload ha bisogno di una postback sincrono, quindi niente updatepanel.
Il fatto che ti funzioni ma non vedi la progress, è proprio per questo motivo.

Devi utilizzare un altro metodo.
In rete trovi decine di pulgin jquery che ti permettono di fare upload di file in maniera asincrona, con relativo pannello waiting.
Oppure devi utilizzare il controllo asyncFileUpload/AjaxFileUpload che trovi nella libreria AjaxControlToolkit.

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AsyncFileUpload/AsyncFileUpload.aspx
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ajaxFileUpload/ajaxFileUpload.aspx
http://creativefan.com/10-ajax-jquery-file-uploaders/

ciao buon lavoro

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

trinity Profilo | Guru

Ciao e grazie sempre della tua pazienza,
allora asyncfileupload ne abbiamo già parlato in un altro post mi da un errore ossia eseguendo secondo me un postback automatico ripete due volte il codice e nelle seconda giro mi genera errore, nell'altro post ti avevo scritto anche il codice e mi avevi detto che a prima vista era giusta la sintassi ma ti serviva di fare dei test per capire meglio...i jquery mai utilizzati ma in pratica il mio problema risale al fatto che non devo uplodare un vero e proprio file ma mettere un waiting nel ciclo che mando e leggo tra client e server quel famoso file stream (di cui parlammo alcuni giorni fa) e dopo i i dati dello stream sono stati scritti sul db far scomparire il waiting....

Pensavo anche a crearmi una progressbar che aumentava in base al numero di righe o byte letti...

Ma devo capire come si fa

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

>Ciao e grazie sempre della tua pazienza,
figurati, è un piacere.

>il mio problema risale al fatto che non devo uplodare un vero
>e proprio file ma mettere un waiting nel ciclo che mando e leggo
>tra client e server quel famoso file stream
quello che dici è proprio "FARE UN UPLOAD".
non puoi mandare uno stream al server senza fare un upload!!!!
Il fatto di salvarlo o no sul disco, non c'entra. L'Upload verso il server è sempre lo stesso.


>
>Pensavo anche a crearmi una progressbar che aumentava in base
>al numero di righe o byte letti...
C'era su internet un bell'esempio..... non lo trovo più :-((


____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

trinity Profilo | Guru

Io in pratica avevo fatto questo con FileUpload e funziona benissimo:

System.Threading.Thread.Sleep(1000) If FileUpload1.HasFile Then Dim myFile As HttpPostedFile myFile = FileUpload1.PostedFile Try Using sr As New StreamReader(myFile.InputStream) Dim line As String Do line = sr.ReadLine() If Not (line Is Nothing) Then Response.Write(line) End If Loop Until line Is Nothing End Using Catch ex As Exception Console.WriteLine(ex.Message) End Try Response.Write("File caricato!") End If

è qui che volevo inserire un waiting progress oppure una progress che visualizzava l'andamento dei dati letti e salvati.....

Ho provato asyncfileupload e mi da errore in quanto esegue due volte il codice dato che fa un postback automatico, poi una volta se il file caricato da errore ed io voglio ripetere la procedura di allegare il file ed eseguire il codice non me lo fa fare devo per forza ricaricare la pagina....
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

trinity Profilo | Guru

Ciao scusa se ti disturbo, ricordo il file di leggere un file txt in stream con il metodo inputstream, ecco ora dovrei fare il contrario ossia dal database del web server devo leggere una serie di record e creare sul client un file txt nella cartella che il cliente specifica..
stavo leggendo un pò il metodo outstream ma mi chiedevo se avessi degli esempi dettagliati migliori per capire e poi in aspe net controlli ajax c'è un controllo che faccia il file salva con nome per esempio?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

in questo caso, devi agire direttamente sulla Response.
In pratica pulisci la response, metti dei dati nell'header della response, poi leggi il file e lo metti interamente nella Response.

Il browser fa tutto il resto.
Ecco qui alcuni esempi:
http://forums.asp.net/t/1037104.aspx/1
http://www.codeproject.com/Articles/15649/Create-and-download-text-file-from-a-web-page
http://www.codeproject.com/Questions/206224/Download-pdf-word-text-file-in-asp-net

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

trinity Profilo | Guru

OK se uso questo metodo preso da uno dei tuoi esempi:

Dim strFileName As String = System.IO.Path.GetRandomFileName() Dim strFriendlyName As String = "Friendly.txt" Using sw As New System.IO.StreamWriter(Server.MapPath(_ "TextFiles/" + strFileName + ".txt")) sw.WriteLine(txtText.Text) sw.Close() End Using Dim fs As System.IO.FileStream = Nothing fs = System.IO.File.Open(Server.MapPath("TextFiles/" + strFileName + _ ".txt"), System.IO.FileMode.Open) Dim btFile(fs.Length) As Byte fs.Read(btFile, 0, fs.Length) fs.Close() With Response .AddHeader("Content-disposition", "attachment;filename=" & strFriendlyName) .ContentType = "application/octet-stream" .BinaryWrite(btFile) .End() end with

io eseguo il download ma vorrei indicare una cartella da me specificata dove deve essere salvato il file txt...in pratica per farla breve questo file una volta salvato in locale il cliente lo deve rintracciare ed allegarlo ad un email...purtroppo ci sono i sistemi come windows 7 che in automatico i file scaricati vengo salvati nella cartella download...calcolando che molti dei miei clienti nn sono forti al computer per loro sarebbe molto meglio impostare una cartella il cui nome glielo danno loro e sanno che i file li trovano sempre in quella cartella....Adesso da codice sopra indicato come posso settare il nome della cartella di destinazione?

Ciao e grazie mille
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

>io eseguo il download ma vorrei indicare una cartella da me specificata
>dove deve essere salvato il file txt...in pratica per farla breve
>questo file una volta salvato in locale il cliente lo deve rintracciare
>ed allegarlo ad un email...purtroppo ci sono i sistemi come windows
>7 che in automatico i file scaricati vengo salvati nella cartella
>download...calcolando che molti dei miei clienti nn sono forti
>al computer per loro sarebbe molto meglio impostare una cartella
>il cui nome glielo danno loro e sanno che i file li trovano sempre
>in quella cartella....Adesso da codice sopra indicato come posso
>settare il nome della cartella di destinazione?

Come ti dicevo, questo aspetto dipende esclusivamente dal client, quindi dal browser.
Non puoi inpostare tu una cartella di download per il client.
Deve essere impostata dalla configurazione del browser.

ciao
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

trinity Profilo | Guru

:( invece altra soluzione se io leggessi il dati dal db e creo un file txt sul client direttamente senza eseguire il download si potrebbe fare? Se si come?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

trinity Profilo | Guru

Senti con la lettura dello stream e dato che nel ciclo do loop di lettura devo eseguire molte stored di controllo la procedura funziona ma ci mette un sacco di tempo..pensavo ma se io eseguo l'upload del file fisicamente e poi sempre tramite web eseguo la lettura del file che si trova fisicamente sul server, eseguo le mie stored nel ciclo di lettura e poi la termine elimino il file?
Si velocizzerebbe la procedura oppure no..
attualmente io eseguo questo bel papiro di codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

se secondo te si può scrivere meglio dimmi dove devo modificare e come te ne sarei molto grato.....con il discorso del bulk non tanto ho capito come applicarlo alla mia situazione.

Ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

sinceramente non ho avuto tempo di analizzare il tuo codice. Ho visto che comunque fa diverse operazioni sui dati tramite SP (Stored Procedure).
Probabile che ci sia qualche possibilità di miglioramento, ma bisognerebbe spulciare il tutto a fondo.

Evenualmente se vuoi rendere la cosa più interattiva e far sembrare che la pagina non sia bloccata in attesa dell'elaborazione, puoi prendere spunto da qui:
http://glucolo.wordpress.com/2011/06/20/long-running-task-with-asp-net/
http://msdn.microsoft.com/en-us/magazine/cc163553.aspx
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5