Возвращаем файл .Net MVC и затем удаляем его - PullRequest
2 голосов
/ 09 ноября 2010

Я создал приложение MVC, которое при доступе к / App / export архивирует все файлы в определенной папке, а затем возвращает zip-файл.Код выглядит примерно так:

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

Что я хотел бы сделать, это вернуть файл пользователю и затем удалить его.Есть ли способ установить тайм-аут для удаления файла?или удерживать дескриптор файла, чтобы файл не был удален до завершения запроса?

Ответы [ 2 ]

7 голосов
/ 09 ноября 2010

Извините, у меня сейчас нет кода ...

Но идея здесь такова: просто избегайте создания временного файла!Вы можете записать сжатые данные непосредственно в ответ, используя для этого MemoryStream.

РЕДАКТИРОВАТЬ Что-то в этой строке (не используется MemoryStream, но идея та же,избегая создания временного файла, здесь используется библиотека DotNetZip ):

DotNetZip теперь можно сохранять непосредственно в ASP.NET Response.OutputStream .

0 голосов
/ 24 сентября 2015

Вы можете создать реализацию Stream, похожую на FileStream, но которая удаляет файл при его удалении.

В этом сообщении есть хороший код .

...