即时创建文本文件,并在客户端下载/保存



在我们的asp.net core 1.1中从客户端保存/下载用户。

在过去,我们过去经常进行以下操作:

List<string> stringList = GetListOfStrings();
MemoryStream ms = new MemoryStream();
TextWriter tw = new StreamWriter(ms);
foreach (string s in stringList) {
    tw.WriteLine(s);
}
tw.Flush();
byte[] bytes = ms.ToArray();
ms.Close();
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=myFile.txt");
Response.BinaryWrite(bytes);
Response.End();

在ASP.NET Core 1.1中如何实现?尝试关注ASP.NET Core中的文件提供商,无济于事。

MemoryReader mr = new MemoryStream();
TextWriter tw = new StreamWriter(mr);
foreach (string s in stringList) {
    tw.WriteLine(s);
}
tw.Flush();
return File(mr, "application/force-download", "myFile.txt")

或直接写入响应:

HttpContext.Response.Body.WriteAsync(...);

也可行的替代

TextWriter tw = new StreamWriter(HttpContext.Response.Body);

因此,您可以直接写入输出字符串,而无需任何其他内存使用。但是您不应该将其关闭,因为它是与浏览器的连接,并且可能需要在管道中进一步。

最新更新