1

我正在编写一个代码,单击一个按钮后,一个页面将被重定向到另一个 nd 打开第二页后,一个 pdf 文件将像这个网站一样下载http://www.findwhitepapers.com/content22881一样被下载。但不是打开第二页页面和下载 pdf 文件仅下载 pdf 文件,但第二页未打开。第一页代码为

protected void Button1_Click(object sender, EventArgs e)
{
  Response.Redirect("2nd.aspx");
}

第二页的代码写在下面。

 protected void Page_Load(object sender, EventArgs e)
{
    string filepath = "guar-gum/Guar-gum-export-report.pdf";

    // The file name used to save the file to the client's system..

    string filename = Path.GetFileName(filepath);
    System.IO.Stream stream = null;
    try
    {
        // Open the file into a stream. 
        stream = new FileStream(Server.MapPath("Guar-gum-export-report.pdf"), System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
        // Total bytes to read: 
        long bytesToRead = stream.Length;
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
        // Read the bytes from the stream in small portions. 
        while (bytesToRead > 0)
        {
            // Make sure the client is still connected. 
            if (Response.IsClientConnected)
            {
                // Read the data into the buffer and write into the 
                // output stream. 
                byte[] buffer = new Byte[10000];
                int length = stream.Read(buffer, 0, 10000);
                Response.OutputStream.Write(buffer, 0, length);
                Response.Flush();
                // We have already read some bytes.. need to read 
                // only the remaining. 
                bytesToRead = bytesToRead - length;
            }
            else
            {
                // Get out of the loop, if user is not connected anymore.. 
                bytesToRead = -1;
            }
        }
        Response.Flush();
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
        // An error occurred.. 
    }
    finally
    {
        if (stream != null)
        {
            stream.Close();




            //
        }
    }
}
4

2 回答 2

0

您希望在第 2 页上看到什么?你所拥有的只有一个pdf文件。你期待一个空白页面吗?

您的重定向工作正常。当您单击该按钮时,一个 PDF 文件将被发送回浏览器,它会将其视为应下载的文件。不会向浏览器发送任何页面,因此没有可查看的页面。

于 2013-04-26T11:04:07.133 回答
0

这是解决方案:

不要编写您在 page2.aspx 中为文件下载所做的代码,而是在 page2.aspx 中添加一个iframe并将其设置src为文件 Url。

我猜guar-gum/Guar-gum-export-report.pdf你的情况就是这样。可能您应该将其更改为从站点的根目录开始,通过/文件 url 的前缀。

把它放在 page2.aspx

<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>

这是非常简单的方法,没有重定向或 JavaScript,您的 Page2.aspx 也将打开。

更新

根据此答案下面的评论

我认为没有更好的解决方案,但这是另一个令人费解的解决方案(psst!希望您和其他人喜欢..)将仅用于文件下载的 page2.aspx 代码移动到第三页 page3.aspx 并设置iframe.src为 page3.aspx

参考

  1. SO - 如何在 Internet Explorer 中开始自动下载文件
于 2013-04-26T11:27:48.003 回答