У вас коли-небудь було розчаровано, коли ви зайшли на веб-сайт, і там доступні для завантаження документи, зображення та інший вміст, і ви хочете зробити саме це, завантажте його! Натомість при натисканні на елемент вмісту він відкривається у вашому браузері. Я був проти цього питання під час проекту для медичної компанії, і вони потребували їх PDF-файлів для завантаження та не відкриття. Ну, є спосіб змусити його відкрити діалогове вікно "Зберегти як".

Для цього підручника ми будемо вважати, що файли зберігаються локально на сервері, а не в базі даних. (Це зовсім інша дискусія)

По-перше, вам потрібно знати розташування ваших файлів. Тож припустимо, що ваші файли розміщені за адресою //yourserver.com/files/filename.ext. Ми будемо вважати, що Server.MapPath - це "/ files".

Тож на даний момент створимо файл ASP, який контролюватиме завантаження файлу. Почніть зі створення нового порожнього документа за допомогою NotePad або улюбленого редактора HTML. Розмістіть такий 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
%>


Це для цього. Тепер збережіть і завантажте цей файл на свій сервер і назвіть його fileownloader.asp

Скажімо, ім'я файлу на вашому сервері - familytree.pdf

Тоді ви просто передасте наступну URL-адресу у своєму браузері, і з'явиться діалогове вікно "Зберегти файл як відкрите".

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

Це все! Потім ви повинні побачити це:



Удачі, і ви можете покращити це за допомогою баз даних та інших цікавих функцій, щоб переконатися, що файли, до яких ви хочете, щоб ваші користувачі мали доступ, отримують можливість завантажуватись та не відкриватись у поточному веб-переглядачі, що дозволяє їм «залишатися» на вашому веб-сайті .