【问题标题】:return a downloadable zip file using $.post or $.get使用 $.post 或 $.get 返回一个可下载的 zip 文件
【发布时间】:2011-12-29 10:05:08
【问题描述】:

我正在制作一个 zip 文件,我想返回一个可下载的文件,但我无法弄清楚返回文件的部分,即使我尝试了一些我在网上找到的示例。

这是我现在使用的代码,它可以在没有$.post() 的情况下工作,但我需要它与 jquery 一起工作。欢迎所有想法

$('.zipFiles').live('click', function () {
            $.post('/Home/ZipFiles');
});


//return a file
public FileResult ZipFiles()
    {
        var filesToZip = Session["DownloadQue"] as List<string>;
        var savedZipFile = Server.MapPath("~/App_Data/") + DateTime.Now.Minute + ".zip";

        if (filesToZip != null && filesToZip.Count > 0)
            using (var zip = new ZipFile(savedZipFile))
            {                    
                foreach (string item in filesToZip)
                {
                    var path = Server.MapPath(Path.Combine("~/Pics/", item));
                    zip.AddFile(path, @"\cf");
                }

                zip.Comment = "this was made online";                    
                zip.Save();
            }

        return File(savedZipFile, System.Net.Mime.MediaTypeNames.Application.Zip);
    }

【问题讨论】:

  • 无法使用ajax下载文件
  • 您有 25 个问题没有被接受的答案。你不喜欢别人帮助你,因为你不尊重他们吗?
  • @Rune FS,你有没有想过我没有得到正确的答案?我宁愿不接受答案,也不愿接受一半作为一个答案,然后其他有同样问题的人因为那一半作为解决方案而陷入困境。所以我肯定尊重其他用户。我希望这足以回答你
  • 我在写评论之前看到的所有内容实际上确实有一个解决方案的答案,或者您可以增强问题以使其可以回答,或者您要求的东西是不可能的。

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


【解决方案1】:

您可以通过 jQuery 返回文件的内容或操作的结果。在您的代码/home/zipfiles 中返回 .zip 内容,我认为您不想显示/打印 zip 内容。

$('.zipFiles').live('click', function () {
            $.post('/Home/ZipFiles',"",function(data){
               alert(data);
            });
});

要下载文件试试这个:

$('.zipFiles').live('click', function () {
   window.location.href="/home/zipfiles";              
 });

【讨论】:

    【解决方案2】:

    如前所述,您无法通过 AJAX 下载文件,您需要做一些工作。

    首先在您的操作方法中而不是返回 zip 文件生成一个 guid(或其他随机但唯一的名称)并将其保存到您的服务器。您的操作方法应返回此文件的 URL。

    使用 $.post 的成功回调来实际下载文件。让回调解析您的 URL,然后打开一个指向该 URL 的新窗口/iframe。

    【讨论】:

      【解决方案3】:

      我知道标准是使用 $.get 或 $.post...

      但使用“$('form').submit();”是我一直在寻找的东西,并且对我来说完美无缺。

      它将用户留在同一页面并下载文件结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        • 2021-05-21
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多