Проблема с диалоговым окном Сохранить как в IE 7,8 в ASP.NET - PullRequest
1 голос
/ 25 июля 2010

Я пытаюсь написать код, который загружает файл, расположенный на сервере.но диалог сохранения как не открывается в IE.

я пробовал response.redirect, я пробовал

 Response.Clear();
 Response.ContentType = "text/csv"; 
 Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameDisplay); 
 Response.WriteFile(Server.MapPath(pathName + fileNameUnique)); 
 Response.Flush(); 
 Response.End(); 

каждая вещь работает на Firefox и Chrome, но не в Internet Explorer.я знаю, что есть опция безопасности для этого в безопасности ---> пользовательский уровень ---> Загрузки ---> автоматический запрос загрузки файлов, который всегда находится в режиме отключения, и мне нужно включить его, чтобы включитьработать, но я не хочу, чтобы мои пользователи имели с этим дело.как мне преодолеть эту «проблему безопасности»?

Есть ли правильный способ борьбы с загрузкой файлов?какой правильный код для этого?

спасибо, гадым

Ответы [ 4 ]

0 голосов
/ 21 февраля 2011

У меня была такая же проблема, когда моя ссылка для загрузки файла была сделана с использованием:

<a href="DownloadFile.aspx">
    <input type="image" src="~/virtual/path/to/image.png" runat="server" />
</a>

Проблема исчезла, когда я изменил ее на:

<a href="DownloadFile.aspx">
    <img src="~/virtual/path/to/image.png" runat="server" />
</a>
0 голосов
/ 25 июля 2010
var info = new FileInfo(path);

Response.Clear();

Response.AppendHeader("Content-Disposition", String.Concat("attachment; filename=", info.Name));
Response.AppendHeader("Content-Length", info.Length.ToString(System.Globalization.CultureInfo.InvariantCulture));
Response.AppendHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "text/csv";

Response.WriteFile(info.FullName, true);
Response.End();
0 голосов
/ 26 июля 2010

абатищев, спасибо, что помогли мне. я нашел душевное решение своей проблемы.

Я создал диалоговое окно (назовем его «DownloadWindow»), которое содержит пустой тег «HREF». (это показывает - «нажмите здесь, чтобы скачать»)

после того, как я нажму кнопку загрузки (значок EXCEL / CSV) на моей странице по умолчанию (которая создает мой файл динамически), я загружаю диалоговое окно («DownloadWindow»), а затем перезаписываю ссылку «href» на URL файла, который я создал ранее, чтобы мои пользователи могли загрузить его с моего сервера.

Теперь Internet Explorer открыл диалоговое окно открытия / сохранения / отмены.

это немного раздражает, но это решило мою проблему.

0 голосов
/ 25 июля 2010

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

Response.AppendHeader("Content-Disposition", "attachment; filename=" + fname);
Response.AppendHeader("Content-Transfer-Encoding", "binary");

Также настоятельно рекомендуется установить явную длину файла

Response.AppendHeader("Content-Length", responseContentLength.ToString());
...