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(@"\Static\BtDownload\");
//判断文件是否存在
var file = new FileInfo(path + filename);
if (!file.Exists)
{
client.DownloadFile(value, path + filename);
}