У меня есть простой скрипт, который открывает новое окно с использованием 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]