MVC;将可下载文件返回到视图

Posted

技术标签:

【中文标题】MVC;将可下载文件返回到视图【英文标题】:Mvc; Return a downloadable file to a view 【发布时间】:2013-09-25 19:04:04 【问题描述】:

我想在我的控制器的 GetFile 方法中生成一个文件并将它作为一个链接返回 我的观点。用户应该能够单击链接并下载文件。我怎样才能在我的 Jquery 函数(数据)部分写这个。

            @model PopulateDropDownList.Models.Populate
            @using PopulateDropDownList.Models

            @
                ViewBag.Title = "Index";
            

            <h2>Index</h2>

            <script src="../../Scripts/jquery-1.4.4.js" type="text/javascript"></script>


             @using (html.BeginForm("Index", "Home", FormMethod.Post, new rnctype = "multipart/form-data" ))
             

                <p>
                    @Html.DropDownList("mylist", Helper.GetDescription(),"--select here--") 
                    <input id="Button1" type="button" value="button" />

                </p>

              


              <script language="javascript" type="text/javascript">
                  $(document).ready(function () 
                      $("#Button1").click(function () 
                          var SelCat = $("#mylist").val();
                          if (SelCat != 0) 
                              var url = '@Url.Action("GetFile", "Home")';
                              $.post(url,  categoryId: SelCat ,
                            function (data) 

                            );
                          
                          else 
                              alert("You need to select an city");
                          
                      );
                  );   
            </script>




             public FileStreamResult GetFile()
                    
                        string name = "me.txt";
                        FileInfo info = new FileInfo(name);
                        if (!info.Exists)
                        
                            using (StreamWriter writer = info.CreateText())
                            
                                writer.WriteLine("Hello, I am a new text file");

                            
                        
                        return File(info.OpenRead(), "text/plain");
                    

【问题讨论】:

无法使用 ajax 下载文件 【参考方案1】:

您可以将 MVC 操作切换为 ActionResult 而不是 FileStreamResult。 然后只需用常规链接指向它,不需要 jquery 帖子:

<a href="/controller/GetFile"target="_blank">

【讨论】:

以上是关于MVC;将可下载文件返回到视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将可下载文件放入HttpServletResponse?

如何在golang中检查URL是不是可下载?

从 Spring 返回 Excel 可下载文件

如何通过可下载的链接将文本保存为 .txt 文件?

HTML canvas to blob 到 IE9、10 中的可下载文件

从 JavaScript 创建一个可下载的附件?