Volt valaha csalódott, amikor ellátogat egy weboldalra, ahol letölthető dokumentumok, képek és egyéb tartalmak, és ezt csak meg akarja tenni, töltse le! Ehelyett, amikor egy tartalomelemre kattint, az megnyílik a böngészőben. Egy orvossági projekt során vitatkoztam ezzel a kérdéssel, és szükségük volt a PDF-fájljaik letöltésére és nem megnyitásukra. Nos, van mód arra, hogy megnyissa a Mentés másként párbeszédpanelt.

Ennek az oktatóanyagnak a feltételezéséhez feltételezzük, hogy a fájlok helyben a kiszolgálón vannak tárolva, és nem egy adatbázisban. (Ez egy egészen más vita)

Először is tudnia kell a fájlok helyét. Tegyük fel tehát, hogy a fájlok a //yourserver.com/files/filename.ext címen találhatók. Feltételezzük, hogy a Server.MapPath "/ fájlok".

Tehát ezen a ponton hozzunk létre egy ASP fájlt, amely ellenőrzi a fájl letöltését. Először hozzon létre egy új, üres dokumentumot a NotePad vagy a kedvenc HTML szerkesztő segítségével. Helyezze be a következő ASP-kódot:

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


Erre az erre vonatkozik. Most mentse el és töltse fel ezt a fájlt a szerverére, és nevezze el a filedownloader.asp nevet

Tegyük fel, hogy a szerveren a fájlnév: familytree.pdf

Akkor egyszerűen átadja a következő URL-t a böngészőben, és megjelenik a Fájl mentése megnyitásként párbeszédpanel.

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

Ez az! Ezt akkor látnod kell:



Sok szerencsét, és ezt tovább javíthatja adatbázisok és más hűvös funkciók használatával, hogy megbizonyosodjon arról, hogy a fájlok, amelyekhez a felhasználók hozzáférnek, letölthetők és nem nyithatók meg a jelenlegi webböngészőben, lehetővé téve számukra, hogy "maradjanak" az Ön webhelyén. .