Открыть JPG / PDF в новом окне
Когда я попытался открыть файл в новом окне, используя приведенный ниже код, он загружает документ, а не открывается в новом окне. Когда я открываю загруженный документ, он выглядит хорошо.
But I want the document to be open in new window
, Спасибо за вашу помощь.
WebForm2Test.aspx
<a href="WebForm1Test.aspx" onclick="window.open('WebForm1Test.aspx','_blank')">WebForm1Test.aspx </a>
WebForm1Test.aspx.cs
public partial class WebForm1Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Writes Document
System.IO.MemoryStream outStream = new System.IO.MemoryStream(Some_Base64_String);
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ClearContent();
string STR_File_Name = "test"
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + test);
//Known Content Types
if (OBJ_Document.CH_Document_Extension.ToUpper() == "JPG")
{
HttpContext.Current.Response.AppendHeader("Content-Type", "image/jpeg");
}
if (OBJ_Document.CH_Document_Extension.ToUpper() == "JPEG")
{
HttpContext.Current.Response.AppendHeader("Content-Type", "image/jpeg");
}
if (OBJ_Document.CH_Document_Extension.ToUpper() == "PDF")
{
HttpContext.Current.Response.AppendHeader("Content-Type", "application/pdf");
}
using (FileStream file = new FileStream("c:\\file.bin", FileMode.Create, System.IO.FileAccess.Write))
{
byte[] bytes = new byte[outStream.Length];
outStream.Read(bytes, 0, (int)outStream.Length);
file.Write(bytes, 0, bytes.Length);
outStream.Close();
}
HttpContext.Current.Response.TransmitFile("c:\\file.bin");
outStream.Close();
HttpContext.Current.Response.End();
}
}
1 ответ
Ваш заголовок размещения контента заставляет браузер сохранять файл, а не отображать его в строке. Вам все еще нужен заголовок типа содержимого, но попробуйте его после удаления размещения содержимого.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html
Если этот заголовок используется в ответе с типом содержимого application/octet- stream, подразумевается, что пользовательский агент не должен отображать ответ, а непосредственно вводит диалог "сохранить ответ как...".
Со временем это перешло в "содержимое должно быть сохранено напрямую, если отправлено содержимое". По моему опыту, большинство браузеров ведут себя так.