Czy kiedykolwiek byłeś sfrustrowany, gdy wchodzisz na stronę internetową, a dokumenty, obrazy i inne treści są dostępne do pobrania, a chcesz to zrobić, pobierz to! Zamiast tego po kliknięciu elementu treści otwiera się on w przeglądarce. Byłem przeciwko temu problemowi podczas projektu dla firmy medycznej i wymagały one pobrania plików PDF, a nie otwarcia. Istnieje sposób, aby otworzyć okno dialogowe Zapisz jako.

W tym samouczku założymy, że pliki są przechowywane lokalnie na serwerze, a nie w bazie danych. (To zupełnie inna dyskusja)

Najpierw musisz znać lokalizację swoich plików. Załóżmy więc, że Twoje pliki znajdują się na stronie //twoj_serwer.com/files/filename.ext. Zakładamy, że Server.MapPath to „/ files”.

W tym momencie stwórzmy plik ASP, który będzie kontrolował pobieranie pliku. Zacznij od utworzenia nowego, pustego dokumentu za pomocą NotePada lub ulubionego edytora HTML. Umieść następujący kod 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 jest to dla tego. Teraz zapisz i prześlij ten plik na swój serwer i nazwij go filedownloader.asp

Załóżmy teraz, że nazwa pliku na twoim serwerze to familytree.pdf

Następnie wystarczy podać następujący adres URL w przeglądarce, a pojawi się okno dialogowe Zapisz jako otwarte okno.

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

To jest to! Powinieneś zobaczyć to:



Powodzenia i możesz to poprawić, korzystając z baz danych i innych fajnych funkcji, aby mieć pewność, że pliki, do których użytkownicy mają dostęp, mają możliwość pobierania i nie otwierania w bieżącej przeglądarce internetowej, co pozwala im „pozostać” na Twojej stronie .

Instrukcje Wideo: Publish to Studio (Może 2024).