При связывании документов в IE, если он обнаруживает документ, поддерживаемый OLE, IE автоматически вызывает соответствующую программу, чтобы открыть его. Иногда эта функция не то, что нам нужно, хотя мы можем напомнить пользователю о необходимости щелкнуть правой кнопкой мыши -->. Команда «Сохранить объект как» «...» для загрузки документов, но в конце концов это не очень удобно. В этой статье описывается использование методов FSO и Stream для реализации прямой загрузки документов с помощью
кодовой страницы IE <%@ Language=vbscript
.=65001%>
<%
'Имя файла должно быть введено
если Запрос("Имя файла")="" тогда
response.write "<h1>Ошибка:</h1>Имя файла пусто!<p>"
еще
вызовите downloadFile(replace(replace(Request("Имя файла"),"",""),"/",""))
Функция downloadFile(strFile)
' убедитесь, что вы используете последнюю версию MDAC, чтобы это работало
'получить полный путь к указанному файлу
strFilename = server.MapPath(strFile)
'очищаем буфер
Response.Buffer = Истина
Ответ.Очистить
'создать поток
Set s = Server.CreateObject("ADODB.Stream")
с.Открыть
'Установить как двоичный
с.Тип = 1
'загружаем файл
при ошибке продолжить дальше
'проверяем, что файл существует
Установите fso = Server.CreateObject("Scripting.FileSystemObject")
если не fso.FileExists(strFilename), то
Response.Write("<h1>Ошибка:</h1>"&strFilename&" не существует!<p>")
Ответ.Конец
конец, если
'получить длину файла
Установите f = fso.GetFile(strFilename)
intFilelength = f.size
s.LoadFromFile(strFilename)
если ошибка, то
Response.Write("<h1>Ошибка: </h1>Неизвестная ошибка!<p>")
Ответ.Конец
end if
'отправляем заголовки пользователям.
Response.AddHeader "Content-Disposition","attachment; filename="&f.name
Response.AddHeader "Content-Length",intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
' выводим файл в браузер
Response.BinaryWrite s.Read
Response.Flush
'приведение в порядок
с.Закрыть
Установить s = Ничего
Конец функции
конец, если
%>