javascript - AJAX 响应需要转换为 blob

标签 javascript jquery ajax blob

我已经编写了 ajax 代码来在 url 中设置请求 header 并将其转换为 blob 并传递给函数 showFile (blob); blob 然后处理并以 pdf 格式下载 代码中获取的 blob 值为 undefined。有人可以帮我解决这个问题`

   var resolved = function (url) {
        var showFile = function (blob) {
            var newBlob = new Blob([blob], {type:"application/pdf"})                   
            const data = window.URL.createObjectURL(newBlob);
            var link = document.createElement('a');
            link.href = data;
            link.download = options.name;
            link.click();
            setTimeout(function () {
                window.URL.revokeObjectURL(data);
            }, 100)
        }
        var jwtToken = localStorage.getItem("jwtToken");
        var headerObj = {"Authorization": "Bearer " + jwtToken}

        var xhr = new XMLHttpRequest();
        $.ajax({
            dataType:'blob',
            type:'GET',
            url:url
        }).done(function(blob){
            showFile(blob); 
        });
    };

最佳答案

如果您需要来自 jQuery ajax 的 blob 响应,请将 xhrFieldsresponseType 字段设置为 blob。 由于响应将是一个 blob,因此您不必创建一个。
另外,您是否忘记将您的身份验证 header 添加到请求中?

   var resolved = function (url) {
        var showFile = function (blob) {                 
            const data = window.URL.createObjectURL(blob);
            var link = document.createElement('a');
            link.href = data;
            link.download = options.name;
            link.click();
            setTimeout(function () {
                window.URL.revokeObjectURL(data);
            }, 100)
        }
        var jwtToken = localStorage.getItem("jwtToken");
        var headerObj = {"Authorization": "Bearer " + jwtToken}

        var xhr = new XMLHttpRequest();
        $.ajax({
            xhrFields: {
               responseType: 'blob' 
            }
            headers: headerObj, 
            type:'GET',
            url:url
        }).done(function(blob){
            showFile(blob); 
        });
    };

关于javascript - AJAX 响应需要转换为 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50188750/

相关文章:

javascript - "Extend"适合粘性页脚的网页

javascript - 在 node.js 中产生一个子进程

javascript - 如何在 IF 语句内的字符串中使用条件

JQuery 根据文本框中给出的日期计算年龄

javascript - HTML、JQuery、JavaScript - 如何在页面加载时填充输入文件

jquery - 从 ajax 响应内容调用函数

javascript - 计算子 div 顶部位置 - 为什么需要减去父 offsetHeight?

javascript - API Key 和 Developer Key 之间的 YouTube API 区别

jquery - Microsoft AJAX 客户端库与 jQuery

jquery - HTML/jQuery 选项卡失败