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-ридеры. Любая из этих вещей может быть фактором.