Download Automatico File

mercoledì 26 agosto 2009 - 11.50

nik10 Profilo | Junior Member

Slave a tutti,
ho creato un sito dal quale è possibile scaricare dei file excel tramite un link che arriva grazie ad un mail agli utenti.
Tutto questo deve avvenire automaticamente passando prima per un form di autenticazione.
Quindi i passi sono i seguenti:
1- click del link
2 - autenticazione nel sito dell'utente
3 - download automatico
4 - visualizzazione di una pagina

Il problema è il seguente:
Io riesco ad autenticarmi e scaricare il file in modo automatico ma dopo il download non carica più la pagina ma il browser rimane nella pagina precedente (in quella di autenticazione)

il codice che è contenuto nella pagina che dovrebbe visualizzare è il seguente:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not IsPostBack) Then

'Controllo per il download automatico
If Request.QueryString("Comando") = "Download" Then
Response.ContentType = "image/jpeg"
Response.AppendHeader("Content-Disposition", "attachment; filename=street_fighter_4_ryu_ken_1.jpg")
Response.TransmitFile(Server.MapPath("~/Download/street_fighter_4_ryu_ken_1.jpg"))
Response.End()

End If
End If
End Sub
in pratica il controllo del dowload viene fatto nel page_load della pagina che dovrebbe visualizzare.
Spero di essere stato chiaro e spero riusciate ad aiutarmi

Grazie e ciao
Nik10

Gluck74 Profilo | Guru

io ho fatto una prova e riesco a scaricare il file senza problemi, addirittura dal click di un pulsante senza nemmeno cambiare pagina.
Fai questa prova:
al posto di
response.end()
metti
response.Flush(); response.tranfer(pagina);
oppure
response.Flush(); response.redirect(pagina);

aggiungo addirittura una domanda:
tempo fa, con asp, potevo nascondere dalla dialog il pulsante "Apri" e mostrare solo "Download".
chiedo a tutta la community, come si può fare che non ci sono più riuscito?

nik10 Profilo | Junior Member

ciao ho provato ma non funziona...
ah io scrivo in vb... non so magari può essere d'aiuto

Nik10

Gluck74 Profilo | Guru

dunque... tu una volta autenticato cosa fai? rimandi ad una pagina?

io all'interno della mia pagina visibile appena loggato, ho messo un pulsante con il seguente evento:

protected void button_Click(object sender, EventArgs e) { Response.Clear(); Response.ContentType = "image/jpeg"; Response.AppendHeader(..................); Response.TrasmitFile(Server.MapPath(immagine)); }

nik10 Profilo | Junior Member

ok forse mi sono spiegato male...
allora io mi autentico e poi passo alla pagina dei download... a questo punto nel page_load, della pagina stessa, scatta il codice sopra postato... il problema però e che il browser invece visualizza ancora la pagina di login.
si vede che dopo il response della pagina di download blocca tutti processi anche quelli di visualizzazione...
spero di essermi spiegato
Nik10

Gluck74 Profilo | Guru

ok, non avevo tenuto presente il download automatico. Quindi passi per forza ad una pagina nuova....
bene, togli semplicemente il Response.end e vedi cosa succede.

nik10 Profilo | Junior Member

purtroppo niente...

ho trovato un altro metodo:

Dim wbcDownloader As New System.Net.WebClient() 'Creiamo l'oggetto WebClient

'Dichiariamo un array di Byte dove verrà copiato i dati ricevuti
Dim bytDatiRicevuti As Byte()

'Eseguiamo la richiesta HTTP
'wbcDownloader.DownloadFile("http://" + Request.Url.Authority + Request.ApplicationPath + "/Download/" + arrPercorsoFile(arrPercorsoFile.Length - 1), [percorso client])

solo che non so come inserire una savedialog per il [percorso client]

Nik10
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5