从.aspx页面输出文件

时间:2013-08-08 20:53:36

标签: c# asp.net web-applications download

我正在尝试使用代码隐藏C#代码从我的DownloadFile.aspx页面输出文件。我做了以下事情:

protected void Page_Load(object sender, EventArgs e)
{
    string strFilePath = @"C:\Server\file";
    string strFileName = @"downloaded.txt";

    long uiFileSize = new FileInfo(strFilePath).Length;

    using (Stream file = File.OpenRead(strFilePath))
    {
        Response.ContentType = "application/octet-stream";

        Response.AddHeader("Content-Disposition", "attachment; filename=\"" + strFileName + "\"");
        Response.AddHeader("Content-Length", uiFileSize.ToString());

        Response.OutputStream.CopyTo(file);

        Response.End();
    }
}

这样可行,但是当文件下载时&保存其内容只是一个HTML页面。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:7)

您正在向后复制流。应该是:

file.CopyTo(Response.OutputStream);

答案 1 :(得分:3)

在发送文件之前清除响应,然后使用TransmitFile方法。

    Response.Clear()
    Response.TransmitFile("FilePath.ext")
    Response.End()

http://msdn.microsoft.com/en-us/library/12s31dhy.aspx