ASP.NET实现文件下载

时间:2022-03-16 04:18:44

转:http://blog.csdn.net/codeshark/article/details/2473664

方式一:TransmitFile实现下载。将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。

ASP.NET实现文件下载    protected void Button1_Click(object sender, EventArgs e)
ASP.NET实现文件下载     
{
ASP.NET实现文件下载        
/*
ASP.NET实现文件下载          微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。
ASP.NET实现文件下载    代码如下:
ASP.NET实现文件下载    
*/
ASP.NET实现文件下载         Response.ContentType = "application/x-zip-compressed";
ASP.NET实现文件下载         Response.AddHeader("Content-Disposition", "attachment;filename=CodeShark.zip"
);
ASP.NET实现文件下载         string filename = Server.MapPath("DownLoad/CodeShark.zip"
);
ASP.NET实现文件下载         Response.TransmitFile(filename);
ASP.NET实现文件下载     }

方式二:WriteFile实现下载,将指定的文件直接写入 HTTP 响应输出流。注意:对大型文件使用此方法时,调用此方法可能导致异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。

ASP.NET实现文件下载    protected void Button2_Click(object sender, EventArgs e)
ASP.NET实现文件下载    
{
ASP.NET实现文件下载        string fileName = "CodeShark.zip";//客户端保存的文件名

ASP.NET实现文件下载    string filePath = Server.MapPath("DownLoad/CodeShark.doc");//路径
ASP.NET实现文件下载    FileInfo fileInfo = new FileInfo(filePath);
ASP.NET实现文件下载        Response.Clear();
ASP.NET实现文件下载        Response.ClearContent();
ASP.NET实现文件下载        Response.ClearHeaders();
ASP.NET实现文件下载        Response.AddHeader("Content-Disposition", "attachment;filename=" +
 fileName);
ASP.NET实现文件下载        Response.AddHeader("Content-Length"
, fileInfo.Length.ToString());
ASP.NET实现文件下载        Response.AddHeader("Content-Transfer-Encoding", "binary"
);
ASP.NET实现文件下载        Response.ContentType = "application/octet-stream"
;
ASP.NET实现文件下载        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"
);
ASP.NET实现文件下载        Response.WriteFile(fileInfo.FullName);
ASP.NET实现文件下载        Response.Flush();
ASP.NET实现文件下载        Response.End();
ASP.NET实现文件下载    }

方式三:WriteFile分块下载

ASP.NET实现文件下载, lengthRead);
ASP.NET实现文件下载                Response.Flush();
ASP.NET实现文件下载                dataLengthToRead = dataLengthToRead - lengthRead;
ASP.NET实现文件下载            }
ASP.NET实现文件下载            Response.Close();
ASP.NET实现文件下载        }
ASP.NET实现文件下载    }

方式四:流方式下载

ASP.NET实现文件下载, bytes.Length);
ASP.NET实现文件下载        fs.Close();
ASP.NET实现文件下载        Response.ContentType = "application/octet-stream";
ASP.NET实现文件下载        //通知浏览器下载文件而不是打开
ASP.NET实现文件下载    Response.AddHeader("Content-Disposition", "attachment;   filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
ASP.NET实现文件下载        Response.BinaryWrite(bytes);
ASP.NET实现文件下载        Response.Flush();
ASP.NET实现文件下载        Response.End();
ASP.NET实现文件下载    }