【发布时间】:2019-12-14 03:11:44
【问题描述】:
我正在使用 StreamWriter 将字符串写入内存,然后通过 ASP.Net Core Web API 中的 IActionResult 将其作为文件返回,我遇到了一个奇怪的问题,我得到了一条线输出文件末尾的难以辨认的字符......
这是我正在谈论的图像:
第 513 行的文本不应该在那里...我认为它与编码有关,但我对编码或文本了解不多,所以我希望有更多知识的人可以帮帮忙……
这是我的代码:
[HttpGet("download/{fileId}")]
public IActionResult DownloadFile(int fileId)
{
if (!_fileRepository.FileExists(fileId))
return NotFound();
var file = _fileRepository.GetFile(fileId);
if (!ModelState.IsValid)
return BadRequest(ModelState);
string BAIFile = ParseModelToFile(file);
using (MemoryStream ms = new MemoryStream())
{
using (var sw = new StreamWriter(ms, new UnicodeEncoding()))
{
sw.Write(BAIFile);
sw.Flush();
sw.Close();
return File(ms.GetBuffer(), "text/plain", DateTime.Now.ToShortDateString() + ".BAI");
}
}
}
【问题讨论】:
-
Read first paragraph 解释您的问题并为您提供解决方案。
-
另一方面,您可以避免所有这些,而不是再次处理当前数组或使用流,只需调用
return File(Encoding.UTF8.GetBytes(BAIFile), "text/plain"等...
标签: c# asp.net-core .net-core