使用ASPNET MVC 3完成流文件下载时执行某些操作

时间:2011-11-18 12:31:22

标签: c# asp.net-mvc asp.net-mvc-3

我正在使用ASPNET MVC 3,当在View中点击链接时,我从控制器返回一个FileResult(它取自Stream,而不是物理文件)。 我想要实现的是在文件下载完成后做一些事情。有没有可能做到这一点?因为在返回文件后我现在无法写任何东西......

提前致谢!吉列尔莫。

2 个答案:

答案 0 :(得分:6)

创建自己的文件结果或派生现有结果:

public class MyFileStreamResult : FileStreamResult 
{
    // [.. constructors here ..]


    public override void ExecuteResult(ControllerContext context) 
    {
        base.ExecuteResult(context);

        // do something here
    }
}

然后从你的行动中得出结论:

return new MyFileStreamResult(myStream, "application/octet-stream");

答案 1 :(得分:0)

您无法知道文件何时下载或是否已成功下载。

一种解决方案是显示“您正在下载”或“您的下载将在几秒钟内开始”页面,并使用隐藏的iframe或JavaScript开始文件下载。页面可以表现为页面成功。