從文件.aspx我需要重定向到一個網頁,打開它然後下載一個文件。下面我的代碼:打開一個網頁,然後下載一個文件C#
頁Source.aspx
<script runat="server">
protected override void OnLoad(EventArgs e)
{
Response.Redirect("Dest.aspx?download=true");
base.OnLoad(e);
}
</script>
頁Dest.aspx
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
string download= (string)Request.QueryString["download"];
if (download == "true")
{
string url = "myurl/myfile.exe";
System.Net.HttpWebRequest objRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
System.Net.HttpWebResponse objResponse = (System.Net.HttpWebResponse)objRequest.GetResponse();
int bufferSize = 1;
Response.ClearHeaders();
Response.ClearContent();
Response.AppendHeader("content-disposition:", @"attachment;filename=""myFileName.exe""");
Response.AppendHeader("Content-Length", objResponse.ContentLength.ToString());
Response.ContentType = "application/download";
byte[] byteBuffer = new byte[bufferSize + 1];
System.IO.MemoryStream memStrm = new System.IO.MemoryStream(byteBuffer, true);
System.IO.Stream strm = objRequest.GetResponse().GetResponseStream();
byte[] bytes = new byte[bufferSize + 1];
while (strm.Read(byteBuffer, 0, byteBuffer.Length) > 0)
{
Response.BinaryWrite(memStrm.ToArray());
Response.Flush();
}
Response.Close();
Response.End();
memStrm.Close();
memStrm.Dispose();
strm.Dispose();
}
}
</script>
兩個現在的問題:
調用頁面 「Source.aspx」 的下載是自動啓動的,但頁面Dest.aspx未顯示在瀏覽器中
下載的文件名爲「Dest.aspx」,而不是我設置的「myFileName.exe」廣告 Response.AppendHeader(「content-disposition:」,@「attachment; filename =」「myFileName.exe 「」「);
爲什麼你試圖重定向到第二頁,你可以簡單地在第一個'OnLoad'事件中下載文件。看起來奇怪的是'腳本runat =「server」>'在用戶的計算機上下載文件。 – 2013-05-13 11:20:53
@Rahul謝謝,解決第二個問題。 – user2377447 2013-05-13 12:12:33
@Rhhound使用OnLoad而不是PageLoad並不能解決我的第一個問題。該文件已下載,但該頁面及其內容未顯示。我想要的是顯示頁面,然後「然後」讓文件被下載。 – user2377447 2013-05-13 12:15:39