Ați fost frustrat vreodată când ați accesat un site web și există documente, imagini și alt conținut disponibil pentru descărcare și doriți să faceți doar asta, descărcați-l! În schimb, atunci când faceți clic pe un articol de conținut, se deschide în browser. Am fost împotriva acestei probleme în timpul unui proiect pentru o companie medicală și au avut nevoie de fișierele lor PDF pentru a fi descărcate și nu deschise. Ei bine, există o modalitate de a face să deschidă caseta de dialog Salvare ca.

Pentru acest tutorial, vom presupune că fișierele sunt stocate local pe server și nu într-o bază de date. (Aceasta este o cu totul altă discuție)

În primul rând, trebuie să știți locația fișierelor dvs. Deci, să presupunem că fișierele dvs. sunt situate la //yourserver.com/files/filename.ext. Vom presupune că Server.MapPath este "/ files".

Deci, în acest moment, să creăm fișierul ASP care va controla descărcarea fișierului. Începeți prin a crea un document nou, necompletat, folosind NotePad sau editorul dvs. HTML preferat. Plasați următorul cod 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
%>


Aceasta este pentru acel. Acum, salvați și încărcați acest fișier pe serverul dvs. și denumiți-l fileownloader.asp

Acum să spunem că numele fișierului de pe serverul dvs. este familytree.pdf

Apoi, veți trece pur și simplu următoarea adresă URL în browserul dvs. și va apărea dialogul Salvare fișier ca deschis.

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

Aia este! Ar trebui să vedeți acest lucru:



Noroc și puteți îmbunătăți acest lucru folosind baze de date și alte funcții interesante pentru a vă asigura că fișierelor pe care doriți să le acceseze utilizatorii li se oferă posibilitatea de a fi descărcate și de a nu fi deschise în browserul lor web actual, permițându-le să „rămână” pe site-ul dvs. .