我知道上面的问题已被多次询问过。但那些并没有解决我的问题。 这是问题陈述:
我正在尝试使用' ajax'来下载zip文件,我读了很多帖子文件下载不可能使用AJAX 所以我试图破解它,我不知道我的方法是否正确,我只是尝试过。
所以我在做什么..我从我的控制器发送字节。到我的ajax电话,并尝试使其可下载。
这是我的ajax电话
$.ajax({
type: "POST",
url: 'myURL',
data: JSON.stringify(ajaxData),
dataType: "json",
contentType: "application/json",
crossDomain: true,
accept: "application/zip",
success: function (data) {
// i get the data here from my controller
var sampleBytes = base64ToArrayBuffer(data);
saveByteArray([sampleBytes], 'black1x1.gif');
function base64ToArrayBuffer(base64) {
console.log("base64ToArrayBuffer called");
var binaryString = window.atob(base64);
var binaryLen = binaryString.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++) {
var ascii = binaryString.charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
}
var saveByteArray = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, name) {
var blob = new Blob(data, { type: "octet/stream" }),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = name;
a.click();
window.URL.revokeObjectURL(url);
};
}());
},
error: function (data) {
}
});
&#13;
但是当我将数据转换为base64时,我得到了上述错误。 拜托,不要介意,我可能会做一些愚蠢的事,我只是试过, 任何人都可以帮我解决问题。