2010-11-08 66 views
2

我制作了一个MVC应用程序,当您访问/应用程序/导出它时,将所有文件压缩到特定文件夹中,然后返回压缩文件。代码看起来像这样:.Net MVC返回文件,然后将其删除

public ActionResult Export() { 
    exporter = new Project.Exporter("/mypath/") 
    return File(exporter.filePath, "application/zip", exporter.fileName); 
} 

我想要做的是将文件返回给用户,然后将其删除。有没有办法设置超时删除文件?或者保持在文件句柄上,以便在请求完成之前文件不会被删除?

回答

7

对不起,我没有现在的代码...

但这里的想法是:只要避免创建一个临时文件!您可以将压缩数据直接写入响应,使用MemoryStream

编辑东西该行(它不使用MemoryStream但这个想法是一样的,避免创建一个临时文件,这里使用DotNetZip库):

DotNetZip now can save directly to ASP.NET Response.OutputStream

+0

我正在返回的数据非常庞大,以至于无法在内存中创建临时文件 – PUG 2013-06-18 19:28:22

+0

@jaminator:就这么做。但在这种情况下,我会创建一个用于删除旧临时文件的外部作业。 – rsenna 2013-06-18 20:52:02

-1

您可以创建一个类似于FileStream的Stream实现,但会在处理文件时删除该文件。

this SO post中有一些很好的代码。

相关问题