Sei mai stato frustrato quando accedi a un sito Web e ci sono documenti, immagini e altri contenuti disponibili per il download e vuoi farlo, scaricalo! Invece, quando si fa clic su un elemento di contenuto, si procede all'apertura nel browser. Mi sono trovato contro questo problema durante un progetto per un'azienda medica e avevano bisogno che i loro file PDF fossero scaricati e non aperti. Bene, c'è un modo per farlo aprire la finestra di dialogo Salva con nome.

Per questa esercitazione, assumeremo che i file siano archiviati localmente sul server e non in un database. (Questa è una discussione completamente diversa)

Innanzitutto, devi conoscere la posizione dei tuoi file. Supponiamo quindi che i tuoi file si trovino su //yourserver.com/files/filename.ext. Supponiamo che Server.MapPath sia "/ files".

Quindi, a questo punto, creiamo il file ASP che controllerà il download del file. Inizia creando un nuovo documento vuoto usando NotePad o il tuo editor HTML preferito. Inserire il seguente codice ASP:

<%
'=======================
'Define the names of your functions
'=======================
Dim Stream
Dim Contents
Dim FileName
Dim FileExt
Const adTypeBinary = 1
'=======================
'Get the actual file name from the URL that is passed to the browser
'=======================
FileName = request.querystring("filename") 'Get the name from the URL
'=======================
'GIVE AN ERROR MESSAGE IF THE URL IS EMPTY
'=======================
if FileName = "" Then
response.write "Filename Not specified."
response.end
end if
'=======================
'prevent access to certain files
'=======================
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
select case UCase(FileExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
response.write "You cannot access these file types."
response.end
end select
'=======================
'Start the download process if all is good
'=======================
response.clear
response.contentType = "application/octet-stream"
response.addheader "content-disposition", "attachment; filename=" & FileName
set stream = server.CreateObject("ADODB.Stream")
stream.type = adTypeBinary
stream.open
stream.LoadFromFile Server.MapPath("/files") & FileName
while not stream.EOS
response.BinaryWrite Stream.Read(1024 * 64)
wend
stream.Close
Set stream = Nothing
response.Flush
response.End
%>


Questo è tutto per quello. Ora, salva e carica questo file sul tuo server e chiamalo filedownloader.asp

Ora diciamo che il nome file sul tuo server è familytree.pdf

Quindi passeresti semplicemente il seguente URL nel tuo browser e apparirà la finestra di dialogo Salva come Apri.

//yourserver.com/filedownloader.asp?filename=familytree.pdf

Questo è tutto! Dovresti quindi vedere questo:



Buona fortuna e puoi migliorarlo usando database e altre fantastiche funzioni per assicurarti che i file a cui vuoi che i tuoi utenti accedano abbiano la possibilità di essere scaricati e non aperti nel loro attuale browser web permettendo loro di "rimanere" sul tuo sito web .