创建的Zip文件,但没有下载MVC c#

本文关键字:有下载 MVC Zip 文件 创建 | 更新日期: 2023-09-27 18:19:02

在我看来,我有一些复选框和他们的值包括一个Uri。在控制器中,我得到选中的复选框的值,下载它们的内容(文本)并压缩它们。

它看起来像zip文件是创建的,但当我试图下载它从来没有工作。我没有得到任何错误。更糟糕的是,我的状态是200。

AJAX in View.

 $(document).ready(function () {
    $('#GetTotal').on('click', function () {
        var prices = [];
        $('input[name="check[]"]:checked').each(function () {
            prices.push($(this).attr("value"));
        });
        $.ajax({
            url: "/AzureSearchService/DownloadAll",
            type: "GET",
            data: { coursePrices: prices },
            dataType: "json",
            cache: false,
            traditional: true,
            success: function () {
                alert("ajax request to server succeed");
            }
        });
    });
});

的复选框
<input type="checkbox" name="check[]" value="@url" class="checkbox1" style="margin-left: 5px; margin-right: 5px;">
控制器

public ActionResult DownloadAll(IEnumerable<Uri> coursePrices)
{
    var outputStream = new MemoryStream();
    using (var zip = new ZipFile())
    {
        foreach (Uri uri in coursePrices)
        {
            System.Net.WebClient wc = new System.Net.WebClient();
            Stream s = wc.OpenRead(uri);
            zip.AddEntry(uri.AbsolutePath +  ".txt", s);                 
        }
        zip.Save(outputStream);
    }
    outputStream.Position = 0;
    return File(outputStream, "application/zip", "all.zip");
}

请在浏览器下方查看状态什么浏览器返回状态200

创建的Zip文件,但没有下载MVC c#

如果我正确理解您的问题,您正在尝试从ajax调用下载文件。仅从javascript下载文件到客户端的计算机通常很棘手。你可以考虑这样做:

  1. 使用第三方插件,如jQuery文件下载http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/

  2. 你可以像这样在表单中包装你的复选框:
    @using (Html。BeginForm("DownloadAll", "AzureSearchService",/*附加参数/))
    {
    @
    你的复选框在这里*@
    }