Ben je ooit gefrustreerd als je op een website komt en er zijn documenten, afbeeldingen en andere inhoud beschikbaar om te downloaden en je wilt dat ook doen, download het! Wanneer u in plaats daarvan op een contentitem klikt, wordt dit in uw browser geopend. Ik was tegen dit probleem tijdens een project voor een medisch bedrijf en ze moesten hun PDF-bestanden downloaden en niet openen. Welnu, er is een manier om het dialoogvenster Opslaan als te openen.

Voor deze zelfstudie gaan we ervan uit dat de bestanden lokaal op de server worden opgeslagen en niet in een database. (Dat is een heel andere discussie)

Eerst moet u de locatie van uw bestanden weten. Laten we aannemen dat uw bestanden zich bevinden op //yourserver.com/files/filename.ext. We nemen aan dat de Server.MapPath "/ files" is.

Laten we op dit punt dus het ASP-bestand maken dat het downloaden van het bestand beheert. Begin met het maken van een nieuw, leeg document met Kladblok of uw favoriete HTML-editor. Plaats de volgende ASP-code:

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


Dat is het dan. Sla dit bestand nu op en upload het naar uw server en noem het filedownloader.asp

Laten we zeggen dat de bestandsnaam op uw server familytree.pdf is

Dan zou u eenvoudig de volgende URL in uw browser doorgeven en het dialoogvenster Bestand opslaan als openen zal verschijnen.

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

Dat is het! Je zou dit dan moeten zien:



Veel succes en u kunt dit verbeteren door databases en andere coole functies te gebruiken om ervoor te zorgen dat de bestanden waartoe uw gebruikers toegang moeten hebben, de mogelijkheid krijgen om te worden gedownload en niet worden geopend in hun huidige webbrowser zodat ze op uw website kunnen blijven .

Video-Instructies: How to make a simple calculator using Visual basic .NET (Mei 2024).