C#实现文件下载的几种方法

一、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);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值