Kas olete kunagi olnud pettunud, kui pääsete mõnele veebisaidile ja seal on allalaadimiseks saadaval dokumente, pilte ja muud sisu ning soovite just seda teha, laadige see alla! Selle asemel, kui klõpsate sisuelemendil, avaneb see teie brauseris. Olin selle teema vastu meditsiiniettevõtte projekti ajal ja nad vajasid oma PDF-failide allalaadimist ja mitte avamist. Noh, on olemas viis, kuidas panna see avama dialoogiboks Salvesta kui.

Selle õpetuse jaoks eeldame, et faile hoitakse lokaalselt serveris, mitte andmebaasis. (See on hoopis teine ​​arutelu)

Esiteks peate teadma oma failide asukohta. Oletame siis, et teie failid asuvad aadressil //yourserver.com/files/filename.ext. Eeldame, et Server.MapPath on "/ files".

Nii et loome nüüd ASP-faili, mis kontrollib faili allalaadimist. Alustage uue tühja dokumendi loomisega NotePadi või oma lemmik HTML-redaktori abil. Pange järgmine ASP-kood:

<%
'=======================
'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
%>


Selle jaoks see ongi. Salvestage ja laadige see fail nüüd oma serverisse ja pange sellele fail failloader.asp

Oletame nüüd, et teie serveri failinimi on familytree.pdf

Seejärel edastaksite brauseris lihtsalt järgmise URL-i ja avaneb dialoogiboks Fail Salvesta kui avatud.

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

See on kõik! Seejärel peaksite seda nägema:



Õnn ja saate seda täiustada, kasutades andmebaase ja muid lahedaid funktsioone, et veenduda, et failidele, millele soovite oma kasutajatele juurde pääseda, on võimalus neid alla laadida ja mitte avada praeguses veebibrauseris, võimaldades neil teie veebisaidil viibida. .