思路:获取到list类型的数据,将其通过浏览器下载成为txt文件,以下是正确写法,已进行过测试
var list =new List<string>(); //下载的数据
using (MemoryStream stream=new MemoryStream())
{
BinaryWriter bw=new BinaryWriter(stream);
foreach (var data in list)
{
byte[] url = Encoding.UTF8.GetBytes(data.Url);
bw.Write(url);
bw.Write("\r\n");
}
var bytes = stream.ToArray();
//下载 fileName为下载的数据名称,例如:下载.txt;其中文件扩展名一定要加,会下载成对应的格式
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileName));
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.BinaryWrite(bytes);
System.Web.HttpContext.Current.Response.End();
}
坑;
1.BinaryWriter写入文件时,前头会加一个其他乱码字符,用来标注长度,所以在写入的时候要将数据转为byte,下面的写法会有问题
bw.Write(data.Url);
bw.Write("\r\n");
结果:
2.如果不加\r\n,内容会写在一行
3.如果只加了\n,结果显示如下
完结撒花~