IE8 OpenWindow не работает при загрузке файла - PullRequest
0 голосов
/ 31 марта 2011

У меня есть простой скрипт, который открывает новое окно с использованием javascript:

<script type="text/javascript">
        window.open("/test/test.aspx", "", "", "");
</script>

Это прекрасно работает при работе с обычными веб-страницами, но когда я пытаюсь скачать pdf-файл, используя:

context.Response.ContentType = "application/pdf";
context.Response.WriteFile(fileFullName); 

Я вижу открывающееся окно, но оно закрывается сразу после этого.Это поведение отображается только в том случае, если не работает локально, при доступе к другому серверу.

При использовании другого браузера, кроме IE8, проблем нет, загрузка работает отлично.

У меня есть дляСейчас можно найти способ открыть страницу со ссылкой на нее, чтобы пользователь щелкнул и получил доступ к своей загрузке, но мне не очень нравится решение.

спасибо за ваш вклад,

[EDIT] Вот упрощенный код:

page1:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <script type="text/javascript">
        window.open("/page2.aspx", "", "", "");

    </script>

    </div>
    </form>
</body>
</html>

page 2

protected void Page_Load(object sender, EventArgs e)
        {
            string fileFullName = ApplicationStoringPath.TempReportPath + "00329bad-28ac-46bd-9f0a-3eced660f079.pdf";
            string fileName = "test.pdf" ;

            if (File.Exists(fileFullName))
            {
                FileStream file = File.Open(fileFullName, FileMode.Open);
                long length = file.Length;
                file.Dispose();


                Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", fileName));
                Response.AddHeader("Pragma", "public");
                Response.AddHeader("Expires", "0");
                Response.AddHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
                Response.AddHeader("Content-Transfer-Encoding", "binary");
                Response.AddHeader("Content-Length", length.ToString());
                Response.ContentType = "application/pdf";

                Response.WriteFile(fileFullName);
            }
        }

Вот что происходит:

Доступ к странице1 из местных открывает всплывающее окно и предлагает скачать.(IE) Доступ к странице 2 с локального компьютера предлагает загрузку. (IE)

Доступ к странице 1 с другого ПК открывает всплывающее окно и не предлагает загрузку.(IE) Доступ к странице 2 с другого ПК предлагает загрузку.(IE)

Доступ к странице 1 с другого компьютера открывает всплывающее окно и предлагает загрузку.(FireFox) Доступ к странице 2 с другого ПК предполагает загрузку.(FireFox)

Это не какая-то блокировка всплывающих окон.Файл, к которому я пытаюсь получить доступ, находится во временной папке сайта, на котором размещены мои страницы, то есть на том же сервере.

[EDIT]

Ответы [ 3 ]

2 голосов
/ 03 июля 2012

В моем случае файл загружался, но всплывающее окно open-save не показывалось. Я только что включил «Автоматическое приглашение для загрузки файла», и это сработало:)

Откройте Internet Explorer> Сервис> Свойства обозревателя> Безопасность> Пользовательский уровень> Загрузить: Установите флажок «Автоматически запрашивать загрузку файла».

0 голосов
/ 01 апреля 2011

Привет всем, спасибо за вашу помощь.

Что бы я ни пытался использовать всплывающее окно, не получилось, и поэтому я попытался использовать iframe для загрузки. К счастью, это сработало как шарм.

тот же код, но теперь я использую:

<iframe id="DownloadIFrame" visible=false height=1 width=1></iframe>
<script type="text/javascript">


    document.getElementById('DownloadIFrame').src = "/page2.aspx";

</script>
0 голосов
/ 31 марта 2011

Может быть, у вас есть блокировщик всплывающих окон в IE8, который еще не настроен?

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