我有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
byte[] buffer = null;
buffer = File.ReadAllBytes("C:\\myfile.pdf");
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.OutputStream.Write(buffer, 0, buffer.Length);
HttpContext.Current.Response.End();
}
我想为当前页面旁边的pfd文件打开第二个窗口,其中包含页面加载。
答案 0 :(得分:1)
无法从代码隐藏文件中打开新窗口。指向此Page_Load事件的页面的链接必须具有target="_blank"
属性才能在新窗口中打开它。例如:
<a href="DownloadPdf.aspx" target="_blank">Download PDF<a>
另外,如果这是ASPX文件的唯一功能,您可能需要考虑使用HttpHandler。
答案 1 :(得分:1)
为了做到这一点,你需要将PDF上传到应用程序中可以呈现给用户的路径,然后注册一些javascript以在新窗口中打开PDF:
protected void Page_Load(object sender, EventArgs e)
{
byte[] buffer = null;
buffer = File.ReadAllBytes("C:\\myfile.pdf");
//save file to somewhere on server, for example in a folder called PDFs inside your application's root folder
string newFilepath = Server.MapPath("~/PDFs/uploadedPDF.pdf");
System.IO.FileStream savedPDF = File.Create(newFilepath);
file.Write(buffer, 0, buffer.Length);
file.Close();
//register some javascript to open the new window
Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenPDFScript", "window.open(\"/PDFs/uploadedPDF.pdf\");", true);
}
答案 2 :(得分:0)
您无法通过回复执行此操作。
如果您控制了引导加载此页面的超链接,您可以给它一个属性target="_blank"
,它将要求浏览器在新窗口中打开该链接。