繁体   English   中英

尝试使用 ajax 下载 Zip 文件,但无法在 asp.net mvc 中下载

[英]Trying to download Zip file using ajax but can't able to download in asp.net mvc

我正在尝试使用 ajax 下载 zip 文件,我从 controller 端返回如下所示。 如果我使用“window.location.href”,我可以下载,但我想使用 ajax 下载。

Controller 返回码:

using (MemoryStream memoryStream = new MemoryStream())
{
   zip.Save(memoryStream);
   return File(memoryStream.ToArray(), "application/zip", zipName);
}

ajax 从视图侧调用

 $.ajax({
                url: "url",
                cache: false,
                type: "GET",
                contentType: "application/zip; charset=utf-8",
                success: function (results) {
                    debugger
                    var result = results;
                    debugger
                }
            });

请帮助我使用 ajax 下载 zip 文件

提前致谢

1 在您的 controller 或 razor 年龄

  • 一个。 删除 controller 中的使用
  • 湾。 无需在 stream 上调用.ToArray()
public IActionResult DownloadFile(//params)
{
   var memoryStram = //wherever it is you are getting your stream from

   zip.Save(memoryStream);

   memoryStream.Position = 0; // i tend to set this if i dont know the state of the stream

   return File(memoryStream, "application/zip", zipName);
}

2 您的 ajax 电话

选项 1:进行 ajax 调用,然后在完成后重定向以获取文件

function download(e) {
        $.ajax({
            type: "POST",
            url: '/url', //call your controller and action
            contentType: "application/json; charset=utf-8",
            dataType: "json", // dont forget this is required
        }).done(function () {
                //use window.location.href for redirect to download action for download the file
                window.location.href = '/api/AjaxAPI/Download';
        });
    }

选项 2:将所有功能集中在一个 go

$.ajax({
        url: '/url',     // url to your controller/action
        method: 'GET',
        contentType: "application/json; charset=utf-8",
        dataType: "json",           // dont forget this is required
        success: function (data) {
            var a = document.createElement('a');
            var blob = new Blob([data], {type: "application/zip"})
            var url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = 'myfile.zip';
            document.body.append(a);
            a.click();
            a.remove();
            window.URL.revokeObjectURL(url);
        }
 });

这些是我能想到的2个。我相信还有更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM