无法执行' atob' on' Window':要解码的字符串没有正确编码错误

时间:2017-08-19 12:53:55

标签: javascript ajax

我知道上面的问题已被多次询问过。但那些并没有解决我的问题。 这是问题陈述:

我正在尝试使用' 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;
&#13;
&#13;

但是当我将数据转换为base64时,我得到了上述错误。 拜托,不要介意,我可能会做一些愚蠢的事,我只是试过, 任何人都可以帮我解决问题。

0 个答案:

没有答案