Периодическая ошибка - IE6 показывает файл как текст в браузере, а не как загрузку файла - PullRequest
2 голосов
/ 30 декабря 2010

На сайте ASP.NET WebForms 2.0 мы сталкиваемся с периодически возникающей ошибкой в ​​IE6, из-за которой попытка загрузки файла приводит к тому, что содержимое отображается непосредственно в браузере в виде текста, а не отображается диалоговое окно сохранения файла. Наше приложение позволяет пользователю загружать как PDF, так и CSV файлы.

Код, который мы используем:

HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", "attachment;filename=\"theFilename.pdf\"");
response.ContentType = "application/pdf";
response.BinaryWrite(MethodThatReturnsFileContents());
response.End();

Это вызывается из обработчика событий щелчка с выделенным кодом элемента управления сервером кнопки.

Куда мы пойдем не так с этим подходом?

Редактировать

После ответа Джеймса на этот пост код, который я использую сейчас, выглядит следующим образом:

HttpResponse response = HttpContext.Current.Response;
response.ClearHeaders();
// Setting cache to NoCache was recommended, but doing so results in a security
// warning in IE6
//response.Cache.SetCacheability(HttpCacheability.NoCache);
response.AppendHeader("Content-Disposition", "attachment; filename=\"theFilename.pdf\"");
response.ContentType = "application/pdf";
response.BinaryWrite(MethodThatReturnsFileContents());
response.Flush();
response.End();

Однако я не верю, что любое из внесенных изменений решит проблему.

1 Ответ

1 голос
/ 30 декабря 2010

Глупый ответ: вы ошибаетесь, поддерживая IE6 ....

Response.Clear только удаляет содержимое из ответа, вместо этого используйте Response.ClearHeaders.

Кроме этогоВозможно, вы захотите посмотреть, используя Response.Buffer & Response.Flush и явно указав

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Лично я мог бы добавить длину содержимого и кодировку в мои заголовки, поскольку больше информации приходится работать браузеру.тем лучше.

http://msdn.microsoft.com/en-us/library/system.web.httpresponse.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...