一、a标签
在a标签的url上指定文件的路径,这样,点击a标签就可以实现文件下载。
<a href='C:\xx.txt'></a>
二、利用response对象
原理:将文件以文件流的形式打开,将流中数据读取到字节数组中,利用response.write将字节数组发送到前台,这样,就会提示文件下载。
1)将文件以文件流的形式打开
Stream st=new FileStream(filepath,FileMode.Open,FileAccess.Read,FileShare.Read);//这里filepath是文件的物理路径,FileMode指的是我们要做的操作,这是一个枚举项;FileAccess是文件访问权限,FileShare是文件的共享方式
//这里我们添加header是为了提示下载的时候也可以提示文件的大小
Response.AddHeader("Content-Length", (st.Length).ToString(CultureInfo.InvariantCulture));
这里我们指定contentType以流的形式输出
Response.contentType="application/octet-stream";
//这里获取文件的文件名
string fileName = Path.GetFileName(filepath) ?? string.Empty;
//将文件的文件名也添加到提示里
Response.AddHeader("Content-Disposition", "attachment; filename=" +
HttpUtility.UrlEncode(System.Text.Encoding.GetEncoding(65001).
GetBytes(fileName)));
//准备一个buffer数组
byte[] buffer=new byte[4096];
//循环将流里面的数组读到buffer数组里,并且循环发送到前台
while (true)
{
if (!Response.IsClientConnected) break;
var length = st.Read(buffer, 0, 4096);
if (length <= 0) break;
Response.OutputStream.Write(buffer, 0, st.Length);
}