При связывании документов в IE, если он обнаруживает документ, поддерживаемый OLE, IE автоматически вызывает соответствующую программу, чтобы открыть его. Иногда эта функция не то, что нам нужно, хотя мы можем напомнить пользователю о необходимости щелкнуть правой кнопкой мыши -->. save target as ....команда для загрузки документов, но в конце концов это не очень удобно. В этой статье описывается использование методов FSO и Stream для реализации прямой загрузки документов через IE. <%@language=кодовая страница vbscript=65001%>
<%
'Имя файла должно быть введено
если Запрос (имя файла) = тогда
response.write <h1>Ошибка:</h1>Имя файла пусто!<p>
еще
вызовите downloadFile(replace(replace(Request(Filename),/,),/,))
Функция downloadFile(strFile)
' убедитесь, что вы используете последнюю версию MDAC, чтобы это работало
'получить полный путь к указанному файлу
strFilename = server.MapPath(strFile)
'очищаем буфер
Response.Buffer = Истина
Ответ.Очистить
'создать поток
Установите 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>)
Ответ.Конец
конец, если
'отправляем заголовки пользователям.
Response.AddHeader Content-Disposition,attachment=&f.name;
Response.AddHeader Content-Length,intFilelength
Response.CharSet = UTF-8
Response.ContentType = приложение/поток октетов
'выводим файл в браузер
Response.BinaryWrite s.Read
Ответ.Flush
' прибраться
с.Закрыть
Установить s = Ничего
Конечная функция
конец, если
%>