我的Controller
类中有以下代码:
[HttpPost]
public async Task<IActionResult> GetDataFile(string id, [FromBody] DataLog log)
{
FileStream fileStream = System.IO.File.OpenRead($"{dataFile}_{id}.log");
//using a using block or Close prevents the download...
return File(fileStream, "application/octet-stream");
}
该文件应该是临时存在的,因此当客户端完成下载后,服务器应删除该文件。
我知道当流打开时,我无法关闭它。
我应该使用什么回调?有最佳实践吗?
答案 0 :(得分:4)
您可以执行以下操作:
public FileResult GetDataFile(string id, [FromBody] DataLog log)
{
var bytes = System.IO.File.ReadAllBytes("<absolute path of file here>");
System.IO.File.Delete("<absolute path of file here>");
return File(bytes, "application/octet-stream", "<name of file>");
}
因此,您将文件读入字节数组,然后删除物理文件并将字节数组返回给客户端。