mvc开发模式下进行文件的下载


在这里主要是讲一下mvc的文件下载操作,现在本人是要做一个mvc的小项目,用的是mvc3.0,所以这里以mvc3.0讲解下吧,

其实code也非常简单,如果对下载这块儿还存在疑惑的code Man... 看完本篇小demo,定会捂嘴偷笑... 咱开始吧

第一步:在controller里的action这样定义

 public ActionResult DownLoad()
        {
            return new DownloadResult { VirtualPath = "~/content/Sth/testDemo.rar", FileDownloadName = "DownFileName.rar" };
        }

这里的 Virtualpath 表示你要设置下载的文件是哪个? 我这里是获取content文件夹下面的sth文件夹下面的testDemo.rar文件。然后设置FileDownloadName为你要下载时保存的文件名字是什么,我这里设置的为下载时默认保存为DownFileName.rar

第二步:创建DownloadResult类,该类主要是设置下载时的一些必须的参数,code 如下:

 1  public class DownloadResult : ActionResult
 2     {
 3 
 4         public DownloadResult()
 5         {
 6         }
 7 
 8         public DownloadResult(string virtualPath)
 9         {
10             this.VirtualPath = virtualPath;
11         }
12 
13         public string VirtualPath
14         {
15             get;
16             set;
17         }
18 
19         public string FileDownloadName
20         {
21             get;
22             set;
23         }
24         public override void ExecuteResult(ControllerContext context)
25         {
26             if (!String.IsNullOrEmpty(FileDownloadName))
27             {
28                 context.HttpContext.Response.AddHeader("content-disposition",
29                   "attachment; filename=" + this.FileDownloadName);
30             }
31 
32             string filePath = context.HttpContext.Server.MapPath(this.VirtualPath);
33             context.HttpContext.Response.TransmitFile(filePath);
34         }
35     }

该类主要是对VirtualPathFileDownloadName进行初始一下,很重要的一点是AddHeader("content-disposition","attachment; filename="+this.FileDownloadName);

this.FileDownloadName 是在action里newDownloadResult类时,传进来的参数, 下面的Server.MapPath是保存下载文件在什么地方,根据用户选择而定。

第三步:主要是在view里进行操作了,这里可以使用测试单元进行测试(我这里就直接在view里操作吧) code 如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>下载示例</title>
 5 </head>
 6 <body>
 7     <div>
 8         <a href=@Url.Content("/test/DownLoad")>下载</a>
 9     </div>
10 </body>
11 </html>

这里的 /test/downLoad就是指向我第一步时创建的action,

相信大家 看到这里,对mvc模式下的下载应该掌握了吧。嘻嘻

  若能帮助到你,万分荣幸

  

优质内容筛选与推荐>>
1、解决阿里云轻量级服务器mysql无法ssh连接
2、大数据量下水晶报表的实现及显示过程中的进度条显示讨论
3、营销思维战略--先免费,后收费
4、(C++)UrlEncode的标准实现
5、Java元数据总结:Java注释的使用和定义


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn