Newsgroup: it.comp.www.asp
Titolo: File download

Premetto che č da stamattina che googlo e provo soluzioni ma non ho
cavato un ragno dal buco.
Ho un Hosting su Aruba. L'utente deve autenticarsi e scaricare un file
zip. Il file non deve essere accessibile puntandovi semplicemente il
browser.
Sinceramente, non pensavo di incorrere in tante complicazioni.
Il file di prova č di 600K ma potrebbe anche essere maggiore.
Lo stream ADO non funzia. O meglio, all'inizio funziona, poi vieni
*marchiato a fuoco* e non va piů. 
Provo con la creazione di un file temporaneo in Public, ma non riesco
a trovare un modo decente per programmarne la cancellazione
post-download.
Qualcuno sa suggerirmi una buona soluzione per questo scenario?
Ciao e grazie.

 Qualcuno sa suggerirmi una buona soluzione per questo scenario?
Io farei un evento di cancellazione all'evento session OnEnd... e un bel 
session.abandon dopo il dowload.
Se l'utente chiude prima... l'evento avviene da solo per timeout.
Ovviamente dovrai legare il nome del file alla sessione in qualche modo... 

Se l'utente chiude prima... l'evento avviene da solo per timeout.
Ho settato il timeout = 1 e aspettato: niente da fare
Ho l'impressione che sto trascurando qualcosa di basilare. Dov'è che
sbaglio?
Ciao

 sbaglio?
temo che dopo l'evento OnEnd abbiamo gia' perso il SessionId... quindi c'e' 
da escogitare un modo per ritirarlo fuori... provando a salvarlo in una 
variabile temporanea ad esempio

Questo sarebbe il male minore... la sessione va in timeout e muore da sola.
A me sembra invece il male maggiore 8( ....
Mi accontenterei pure di lasciar fare al timeout, ma sembra che questi
non intervenga mai e che, quindi, la Sub Session_OnEnd() non mi venga
mai eseguita.
Per tagliare la testa al *topo*, infatti, ho fatto cosě:
(sintetizzo grosso modo)
- *Prima* del download, inserisco in un db il nome del file.
- Nel Session_OnEnd() ripesco dal db il nome del file e, se esiste
fisicamente, lo elimino. 
Di sistemi per memorizzare *cosa* deve essere eliminato ce ne
sarebbero anche altri. Il punto č *in che modo* far scattare gli
eventi in questo benedetto ASP.
Ho provato a mettere il Timeout = 1 sia nel Session_OnStart() che
nella pagina asp, ma nisba: il file č sempre lě.
Quale potrebbe essere il problema?
Ciao

 Ho provato a mettere il Timeout = 1 sia nel Session_OnStart() che
visto che aruba non da grane con lo spazio utilizzato e se non ti preoccupa 
la sicurezza,
potresti creare un cartella in public (tipo /downloads). ci copi dentro i 
files
nominandolo "/public/downloads/" & session.SessionID & ".zip" e lo fai 
scaricare all'utente,
magari mascherando il nome del file utilizzando gli header tipo
Response.AddHeader "Content-Disposition", "attachment;filename=" & 
session.SessionID & ".zip"
poi lasci all'utente che il download vada avanti (anche perche' non puoi 
sapere i tempi)
dopodiche' nel global asa, metti questo scriptino
Sub Application_OnStart
 Set fso = CreateObject("Scripting.FileSystemObject")
  fso.DeleteFolder("d:/inetpub/webs/dvaranet/public/TemporaryEmailDirs/*")
end sub
cosi' ad ogni riavvio dell'applicazione, ti viene pulita la cartella intera. 
se hai l'hosting su win2003,
non e' permesso utilizzare l'asterisco, quindi controlli se esiste la 
cartella, la cancelli e la ricrei al volo.