asp.net mvc FileStreamResult

时间:2011-01-18 13:51:28

标签: asp.net-mvc

问题的第一部分:

我在DB中有信息,我想从db获取它并将其作为.txt文件保存到客户端。

我使用Regular asp.net完成了它。但在mvc还没有。我的信息不是图像。关于人民的这些信息

我看了This site

问题的第二部分:

我想将文件下载到客户端。下载一个文件时没有问题,但是我想用1个请求一次下载3个文件。但它无法完成。所以我决定创建zip文件并生成链接。当用户点击链接时,它将下载给用户。

你怎么想?用这种方式做到这一点好吗?

问题的第三部分:(新)

如何在成功下载后从目录中删除旧的.zip文件?或另一种方式。让我们说服务将在服务器上运行。

2 个答案:

答案 0 :(得分:13)

您可以执行以下控制器操作,该操作将从数据库中获取信息并将其写入响应流,以允许客户端下载它:

public ActionResult Download()
{
    string info = Repository.GetInfoFromDatabase();
    byte[] data = Encoding.UTF8.GetBytes(info);
    return File(data, "text/plain", "foo.txt");
}

并在您的视图中提供指向此操作的链接:

<%= Html.ActionLink("Downoad file", "Download") %>

答案 1 :(得分:3)

您可以删除使用此类操作过滤器返回的临时文件。然后将该属性应用于MVC操作方法。

    public class DeleteTempFileResultFilter : ActionFilterAttribute
    {
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            string fileName = ((FilePathResult)filterContext.Result).FileName;

            filterContext.HttpContext.Response.Flush();
            filterContext.HttpContext.Response.End();

            System.IO.File.Delete(fileName);
        }
    }