1、以文件流下载
byte[] fileStr=new byte[5]; MemoryStream btMs = new MemoryStream(fileStr); //以字符流的形式下载文件 byte[] bytes = new byte[(int)btMs.Length]; btMs.Read(bytes, 0, bytes.Length); btMs.Close(); Page.Response.ContentType = "application/octet-stream"; //通知浏览器下载文件而不是打开 Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8)); Page.Response.BinaryWrite(bytes); Page.Response.Flush(); Page.Response.End();
2、根据文件路径下载
public void Download(string path) { string filePath = HttpContext.Current.Server.MapPath(path);//路径 //以字符流的形式下载文件 FileStream fs = new FileStream(filePath, FileMode.Open); byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("test", System.Text.Encoding.UTF8)); HttpContext.Current.Response.BinaryWrite(bytes); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); }
3.直接下载
WebClient client = new WebClient();
//文件存放路径
var path = HttpContext.Current.Server.MapPath(@"StaticBtDownload");
//判断文件是否存在
var file = new FileInfo(path + filename);
if (!file.Exists)
{
client.DownloadFile(value, path + filename);
}