1

1 つのボタンをクリックすると、1 つのページが別の nd にリダイレクトされ、2 ページ目を開いた後、この Web サイトhttp://www.findwhitepapers.com/content22881のように 1 つの pdf ファイルがダウンロードされるコードを書いています。ページを開き、pdf ファイルをダウンロードする pdf ファイルのみがダウンロードされますが、2 ページ目は開いていません。1 ページ目のコードは

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

2ページ目のコードを以下に記します。

 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

解決策は次のとおりです。

iframeファイルのダウンロードのためにpage2.aspx で行ったことをコーディングしないでくださいsrc

あなたの場合だと思い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 コード1 をファイルダウンロード専用に移動し、3 番目のページ page3.aspx に設定iframe.srcし、page3.aspxに設定します。

参照

  1. SO - Internet Explorer でファイルの自動ダウンロードを開始する方法
于 2013-04-26T11:27:48.003 に答える