使用 FileStreamResult 删除临时文件

ska*_*kaz 5 asp.net-mvc download asp.net-mvc-3

我正在使用 MVC3 返回在代码中创建的临时文件。然后,我使用FileStreamResult该文件流式传输回客户端。但是,由于这是我不再需要的临时文件,我想清理该文件。我不知道该怎么做,因为我在流式传输时已经点击了 return 语句。谢谢。

public FileStreamResult Download()
{
    string filename = Path.GetTempFileName();
    using (FileStream stream = new FileStream(filename, FileMode.OpenOrCreate))
    {
        CreateFile(this.DataContext, stream);
    }

    using (FileStream outputStream = new FileStream(filename, FileMode.Open))
    {
        HttpContext.Response.AddHeader("content-disposition", "attachment; filename=MyFile.xlsx");
        return new FileStreamResult(outputStream,MimeTypeUtil.GetMimeType("xlsx"));
    }
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*cob 1

如果您的代码与您发布的代码类似,您实际上可能不需要临时文件。(这假设您的方法位于 a 内部Controller):

public ActionResult Download()
{
    using (var stream = new MemoryStream())
    {
        CreateFile(this.DataContext, stream);
        stream.Position = 0; // Not sure if this is necessary
        return File(stream, MimeTypeUtil.GetMimeType("xlsx"), "MyFile.xlsx");
    }
}
Run Code Online (Sandbox Code Playgroud)

FileStreamResult有点用词不当。它似乎接受任何Stream对象,而不仅仅是文件流。