[英]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 文件
提前致谢
.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);
}
选项 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.