2

我有以下代码:

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 文件打开第二个窗口,页面加载来自哪里。

4

3 回答 3

1

无法从代码隐藏文件打开新窗口。触发此 Page_Load 事件的页面的链接必须具有target="_blank"在新窗口中打开它的属性。例如:

<a href="DownloadPdf.aspx" target="_blank">Download PDF<a>

附带说明一下,如果这是 ASPX 文件的唯一功能,您可能需要考虑改用 HttpHandler。

于 2012-11-15T13:56:58.567 回答
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);
}
于 2012-11-15T14:00:41.273 回答
0

你不能从响应中做到这一点。

如果您可以控制导致此页面加载的超链接,您可以给它一个 attrbute target="_blank",它会要求浏览器在新窗口中打开该链接。

于 2012-11-15T13:56:17.027 回答