Molti di voi nel caso abbiate uno o più siti web avrete sicuramente problemi legati al furto di banda, ovvero download diretto di file senza passare per le proprie pagine. Il seguente script serve appunto per impedirlo a meno che non si passi per la pagina web.
Linguaggio: ASP
Limiti: Causa bug di IIS si può utilizzare con file la cui lunghezza sia inferiore a 6 Mb, a dimensioni maggiori le prestazioni decadono esponenzialmente bloccando il server
Preparazione: la cartella in cui risiederanno i file deve avere disabilitati i permessi di lettura (modifica da effettuare tramite server).
Cosa fa questo codice? Semplice ed ingegnoso: con la modifica alla cartella in cui risiedono i file, questa è diventata invisibile al browser: provando un download diretto avrete perciò un errore. Come si comporta lo script? Tramite asp copia il file in una directory temporanea, fa partire il download (non permettendo nel caso di file PDF o DOC di aprirlo nel browser) e cancellando successivamente il file temporaneo.
Questo il codice:
Codice:
<%
download = "file.zip"
Set fsoMyFile = CreateObject("Scripting.FileSystemObject")
fsoMyFile.CopyFile Server.MapPath("download/"&download&""), _
Server.MapPath("temp/"&download&""), True
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 'adTypeBinary
objStream.Open
strFileName = "temp/"&download&""
objStream.LoadFromFile Server.MapPath(strFileName)
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Response.ContentType = "application/octet-stream"
Response.BinaryWrite objStream.Read
fsoMyFile.DeleteFile Server.MapPath("temp/"&download&"")
objStream.Close
Set objStream = Nothing
end if
%>
Ovviamente il file "download" può anche essere dinamco ed estratto dal database con un download = rs("nome_file"), staalla vostra fantasia. In questo caso i file risiedono nella cartella Download e sono copiati in Temp
Saluti,
Nightmare