buongiorno, vorrei chiedere un favore immenso alle persone che conoscono ado.net a fondo per asp.net. Ho la necessita, per una questione di sicurezza di contenuti, di nascondere i link di download anche alle persone registrate all'intern del sito web. Per far cio' ho usato una pagina asp 3.0 che implementa ADO con questo codice all'interno:
<!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><title>Download</title></head>
<body>
<!--METADATA TYPE="typelib"
UUID="00000205-0000-0010-8000-00AA006D2EA4"
NAME="ADODB Type Library"
-->
<%
' METADATA SERVE PER IMPORTARE LE COSTANTI DI ADO2.5
Response.Buffer = true
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
scarica = Request.QueryString("NomeInCodice")
If scarica = "1" Then scarica1 = "FRNNF.PDF"
If scarica = "2" Then scarica1 = "FZZZZ.PDF"
objStream.LoadFromFile Server.MapPath("/public/domodossola/" & scarica1)
' stream generico, IE chiede di salvare
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=" & scarica & ".pdf"
Response.AddHeader "Content-Length", strFileSize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Do While Not objStream.EOS
Response.BinaryWrite objStream.Read(1024)
Response.Flush
Loop
objStream.Close
Set objStream = Nothing
%>
</body>
</html>
Il codice funziona a meraviglia visto che spezzetta nel buffer file anche di 150MB !!! Molti script su internet non funzionano per file immensi... questo e' una meraviglia.
HA SOLO UN DIFETTO !!!!
Siccome il sito e' fatto in asp.net linguaggio VB, non posso trasferire la var di sessione alla pagina web asp 3.0 riportata sopra. quindi scoperto il link della pagina asp 3.0 con un download manager si possono scaricare i contenuti senza neanche essere registrati al sito.
Le soluzioni a cui avevo pensato sono due:
1) trasformare la pagina asp 3.0 in asp.net (CHE NON SO FARE... qualcuno potrebbe tradurla??)
2) Scrivere un file su disco di sessione e cancellarlo dopo il download?? ma si puo fare? quando si capisce che il download e' davvero finito e non messo in pausa o roba simile??
3)perche' non posso passare una variabile di sessione ''comune'' dalle pagine aspx alle pagine asp?? Mannaggia... come risolvo il problema?? Devo proprio trascrivere il codice in .net mi sa!!!!
Vi prego aiutatemi!! E' davvero importante.... su internet non sono riuscito a trovare nulla sul download forzato in asp.net

Rispondi quotando
