Valentin Valentin - 3 months ago 70
C# Question

How to delete file after download with ASP.NET MVC?

I want to delete a file immediately after download, how do I do it? I've tried to subclass

FilePathResult
and override the
WriteFile
method where I delete file after

HttpResponseBase.TransmitFile


is called, but this hangs the application.

Can I safely delete a file after user downloads it?

Answer

You could create a custom actionfilter for the action with an OnActionExecuted Method that would then remove the file after the action was completed, something like

public class DeleteFileAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
        // Delete file 
    } 
} 

then your action has

[DeleteFileAttribute]
public FileContentResult GetFile(int id)
{
   ...
}