Ie9 зависает при потоковой передаче файла в браузер
Я использую следующее, чтобы передать файл (обычно Excel или PDF) в браузер. Он работает, устанавливая местоположение скрытого iFrame для обработчика загрузки, который содержит код.
t отлично работает в Firefox и т.д., а в некоторых случаях IE9, но не в других экземплярах IE9.
Если он не работает, появляется панель информации, но нет возможности открыть, только сохранить или отменить.
Затем панель информации зависает и не может быть закрыта или отменена.
Также URL изменяется так, что точка перед префиксом файла (например,.xls или .pdf) заменяется на символ подчеркивания.
Типичным правильным является
/export_templates/rawdata/[email protected][email protected]{875CFEE5-23D4-42CB-8885-7A9D493DC616}.pdf&fname=Quick%5Fpoll.pdf
Кто-нибудь видел это или нашел исправление. Там нет надстроек, нет av, останавливающих его. Мы сравнили настройки в IE, av и брандмауэре на машинах, где он работает, и не работают, и они идентичны.
Set adoStream = CreateObject("ADODB.Stream")
adoStream.Open()
adoStream.Type = 1
adoStream.LoadFromFile(f.Path)
dataSize = f.size
Response.Buffer = true
Response.CharSet = "UTF-8"
Response.clear
Response.ContentType = "application/x-unknown" ' arbitrary
Response.AddHeader "Content-Length", dataSize
Response.AddHeader "Content-Disposition","attachment;filename=" & thisfname
Response.flush
do while not adoStream.eos
Response.BinaryWrite adoStream.Read(1024 * 8)
Response.flush
loop
Response.End()
adoStream.close
set adoStream=nothing
Ответы
Ответ 1
Я вижу две потенциальные проблемы с приведенным выше кодом и два возможных "смягчающих обстоятельства":
1.) Не указывать имя файла. Я видел проблемы при использовании:
Content-Disposition: attachment;filename=File Name.pdf
против
Content-Disposition: attachment;filename="File Name.pdf"
Обратите внимание на двойные кавычки вокруг имени файла. Это имеет значение, когда имя содержит пробелы или другие небезопасные символы.
2.) Неверный тип содержимого. Как уже упоминалось в комментариях выше, это важный момент для системы, как следует обрабатывать файл. Для PDF вы действительно должны использовать application/pdf
3.) Различные кодировки передачи. Возможно, эта проблема влияет только на содержимое gzipped (deflate). Это было бы не первый раз, когда IE не справлялся с сжатыми потоками должным образом.
4.) Если вы видите разные результаты между копиями одного и того же браузера, вы должны попытаться установить, имеют ли они также одну и ту же второстепенную версию, а также os, плагины, панели инструментов и PDF-ридеры. Любая из этих вещей может быть фактором.