Загрузка файла не работает с IE7

У меня есть страница asp.net, которая отправляет содержимое файла клиенту, поэтому браузер показывает диалоговое окно «Сохранить как» для загрузки файла. Эта страница отображается во всплывающем окне, и когда пользователь нажимает кнопку «Сохранить», она автоматически закрывается и начинается загрузка.

На Windows Server 2003 работает нормально. На висте с другими браузерами тоже работает нормально. Но когда я пытаюсь использовать IE7 и Vista, всплывающее окно открывается и закрывается примерно через секунду, не отображая диалоговое окно загрузки файла. Как я могу это решить?

Код, который я использую для генерации ответа:

FileStream fileStream = new FileStream(filePath, FileMode.Open);
int fileSize = (int)fileStream.Length;

byte[] buffer = new byte[fileSize];
fileStream.Read(buffer, 0, (int)fileSize);
fileStream.Close();

Response.Clear();

Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application / octet - stream";

Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.AddHeader("Extension", Path.GetExtension(filename));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254"); 
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();

И я открываю всплывающее окно с помощью этого javascript:

window.open ('Download.aspx?filename=somefile.ext','downloadWindow','location=0,status=0,scrollbars=0,width=1,height=1');

EDIT: я исправил пробелы, но, к сожалению, проблема не в них.

EDIT 2:: кажется, что эта проблема связана не с Vista, а только с IE. Я также обнаружил, что он отлично работает, когда проект запускается на сервере разработки локально, но при работе с подключением к серверу публикации файл не загружается.


person Serhat Ozgel    schedule 16.10.2008    source источник
comment
Если он работает в IE на другом компьютере, это не проблема IE.   -  person inspite    schedule 24.07.2009
comment
Привет @Serhat - › как ты это решил? У меня сейчас такая же проблема. Спасибо.   -  person kevin    schedule 11.09.2012


Ответы (7)


Попробуйте удалить пробелы в ContentType. Стандарт application/octet-stream.

person swilliams    schedule 16.10.2008

Две вещи.

  1. Как упоминалось ранее, вы захотите удалить пробелы в типе
  2. Есть ли какая-то особая причина, по которой вы не используете Response.TransmitFile(), а не читаете файл самостоятельно?
person Mitchel Sellers    schedule 16.10.2008

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

person Carl    schedule 17.10.2008

Я не могу указать на конкретную проблему в вашем коде (за исключением, возможно, этого типа контента, который выглядит плохо сформированным; не уверен, что это имеет значение). Вот код, который я использую для этого, который работает как в IE7, так и в Firefox:

Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.CacheControl = "public";
Response.OutputStream.Write(byteArr, 0, byteArr.Length);
Response.End();
person TheSmurf    schedule 16.10.2008

Я думаю, что ваша проблема может быть связана с IIS 7. Есть проблема с "addHeader" в новом Сервере интернет-информации с режимом конвейера интеграции.

Попробуйте использовать Response.AppendHeader .

person Community    schedule 27.02.2009

У меня тоже была такая же проблема... и я использовал это решение (я использую его на кнопке. щелчок):

Response.ContentType = "text/txt";
Response.AppendHeader("Content-Disposition", "attachment; filename="+DownloadFileName);
Response.Write(MyFileContent_Text_);
Response.End();

... это просто сработало!

person Community    schedule 02.04.2009

Я наткнулся на этот пост, потому что у меня была похожая проблема, если не такая же. Я использую IE8 в Windows 7.

При отладке на моем локальном компьютере я мог получить приглашение на загрузку файла, но при нажатии «Сохранить» или «Открыть» окно «Ход загрузки» отображалось примерно полсекунды, а затем внезапно закрывалось без загрузки чего-либо.

У меня установлено дополнение для Internet Explorer под названием IE7Pro. Он поставляется с диспетчером загрузок, который я включил. Когда я отключил его, мои проблемы исчезли, и я мог открывать или сохранять свои файлы.

Надеюсь, это окажется полезным для кого-то еще.

person Airn5475    schedule 07.07.2010