ie9 зависает при потоковой передаче файла в браузер - PullRequest
10 голосов
/ 04 мая 2011

Я использую следующее для потоковой передачи файла (обычно Excel или PDF) в браузер.Он работает путем установки местоположения скрытого iFrame для обработчика загрузки, который содержит код.

t отлично работает в Firefox и т. Д., А также в некоторых случаях IE9, но не в других экземплярах IE9.

Там, где она не работает, появляется информационная панель, но нет опции Открыть, только Сохранить или Отменить.

В этом случае информационная панель зависает и не может быть закрыта или отменена.

ТакжеURL-адрес изменяется таким образом, что точка перед префиксом файла (например, .xls или .pdf) изменяется на подчеркивание.

Типичным правильным является

/export_templates/rawdata/downloadfile7.asp?fID=@_pdf@{875CFEE5-23D4-42CB-8885-7A9D493DC616}.pdf&fname=Quick%5Fpoll.pdf

Кто-нибудь видел этоили нашел исправление.Там нет надстроек включен, нет остановки его.Мы сравнили настройки в IE, av и firewall на машинах, где они работают и не работают, и они идентичны.

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 Ответ

3 голосов
/ 28 июня 2011

Я вижу две потенциальные проблемы с кодом выше и две потенциальные "смягчающие обстоятельства":

1.) Не цитируя имя файла.Я видел проблемы при использовании:

Content-Disposition: attachment;filename=File Name.pdf против Content-Disposition: attachment;filename="File Name.pdf"

Обратите внимание на двойные кавычки вокруг имени файла.Это имеет значение, когда имя содержит пробелы или другие небезопасные символы.

2.) Неправильный тип содержимого.Как упомянуто в комментариях выше, это важный сигнал для системы, как файл должен обрабатываться.Для PDF вы действительно должны использовать application/pdf

3.) Различные кодировки передачи.Возможно, эта проблема касается только содержимого gzipped (deflate).Это будет не первый случай, когда IE не сможет правильно обрабатывать сжатые потоки.

4.) Если вы видите разные результаты для копий одного и того же браузера, вам следует попытаться установить, имеют ли они одинаковые значения.минорная версия, а также ОС, плагины, панели инструментов и программы для чтения PDF.Любая из этих вещей может быть фактором.

...