Ste bili kdaj frustrirani, ko pridete na spletno mesto in so na voljo dokumenti, slike in druga vsebina in želite narediti prav to, prenesite! Namesto tega, ko kliknete element vsebine, se ta odpre v vašem brskalniku. Tega vprašanja sem zagovarjal med projektom za medicinsko podjetje in potrebovali so svoje datoteke PDF, da so jih lahko prenesli in ne odprli. No, obstaja način, kako odpreti pogovorno okno Shrani kot.

Za to vadnico bomo predpostavljali, da so datoteke shranjene lokalno na strežniku in ne v bazi podatkov. (To je povsem drugačna razprava)

Najprej morate vedeti lokacijo datotek. Predpostavimo, da se datoteke nahajajo na naslovu //yourserver.com/files/filename.ext. Domnevali bomo, da je Server.MapPath "/ datoteke".

Na tej točki ustvarimo datoteko ASP, ki bo nadzirala prenos datoteke. Začnite z ustvarjanjem novega, praznega dokumenta s pomočjo NotePada ali svojega priljubljenega urejevalnika HTML. Postavite to kodo 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
%>


To je za tisto. Zdaj shranite in naložite to datoteko na strežnik in ji poimenujte fileownloader.asp

Recimo, da je ime datoteke na vašem strežniku familytree.pdf

Nato preprosto vstavite naslednji naslov v brskalnik in pokaže se pogovorno okno Shrani datoteko kot odprto.

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

To je to! Nato bi morali videti to:



Vso srečo in to lahko izboljšate z uporabo baz podatkov in drugih kul funkcij, da zagotovite, da datoteke, do katerih želite, da imajo vaši uporabniki dostop, dobijo možnost nalaganja in ne odprejo v svojem trenutnem spletnem brskalniku, ki jim omogoča, da ostanejo na vašem spletnem mestu .