当前位置: 首页 > 面试题库 >

使用jquery ajax下载pdf文件

顾嘉良
2023-03-14
问题内容

我想下载一个jQueryajax响应的pdf文件。Ajax响应包含pdf文件数据。。我的代码在下面给出,但是我总是得到一个空白的pdf。

$(document).on('click', '.download-ss-btn', function () {

    $.ajax({
        type: "POST",
        url: 'http://127.0.0.1:8080/utils/json/pdfGen',
        data: {
            data: JSON.stringify(jsonData)
        }

    }).done(function (data) {
        var blob = new Blob([data]);
        var link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        link.download = "Sample.pdf";
        link.click();
    });


});

问题答案:

jQuery使用AJAX请求加载二进制数据时存在一些问题,因为它尚未实现某些HTML5 XHRv2功能

鉴于此,您拥有以下两种解决方案之一:

第一个解决方案是放弃JQuery并使用XMLHTTPRequest

与本地HTMLHTTPRequest一起使用,这是执行所需操作的代码

  var req = new XMLHttpRequest();
  req.open("GET", "/file.pdf", true);
  req.responseType = "blob";

  req.onload = function (event) {
    var blob = req.response;
    console.log(blob.size);
    var link=document.createElement('a');
    link.href=window.URL.createObjectURL(blob);
    link.download="Dossier_" + new Date() + ".pdf";
    link.click();
  };

  req.send();

第二种解决方案,使用jquery-ajax-native插件

该插件可以在此处找到,并且可以用于JQuery中缺少的XHRV2功能,这是如何使用它的示例代码

$.ajax({
  dataType: 'native',
  url: "/file.pdf",
  xhrFields: {
    responseType: 'blob'
  },
  success: function(blob){
    console.log(blob.size);
      var link=document.createElement('a');
      link.href=window.URL.createObjectURL(blob);
      link.download="Dossier_" + new Date() + ".pdf";
      link.click();
  }
});


 类似资料:
  • 我可以通过以下服务下载pdf文件: 但是,当我运行该服务时,我得到了以下响应: %���� 10 obj 要打开pdf,我需要用第二个鼠标按钮点击响应链接: WS网址 然后选择“在新选项卡中打开”以打开pdf文件,看起来您正在运行该服务两次以获得一次pdf文件。 我想自动打开每个请求到WS的pdf文件。 这意味着每次您请求WS时,都应该返回直接在屏幕中打开的pdf文件。 有人能帮我修一下吗? Tk

  • 我正在寻找一种在python中下载pdf文件的方法,我看到了关于推荐urllib模块的其他问题的答案。我试图用它下载一个pdf文件,但是当我试图打开下载的文件时,一条消息显示该文件无法打开。 错误消息 这是我使用的代码- 我做错了什么?此外,该文件会自动保存到python文件所在的目录中。如何更改它保存到的位置? 编辑-我再次尝试使用示例pdf的链接,http://unec.edu.az/appl

  • 我正在尝试使用Selenium WebDriver自动执行文件下载功能。我正在使用谷歌浏览器,要下载的文件类型是PDF格式。当 WebDriver 单击下载(或打印)链接时,浏览器将显示 pdf 文件的预览,而不是直接下载。如何使chrome驱动程序直接下载pdf文件?我尝试了下面的代码,但没有运气 我知道这个问题已经在StackOverflow上问过了,包括这个,但这些解决方案都不适合我。 我正

  • API将返回CSV/PDF/XLS类型的文件 问题:

  • 问题内容: 我有一个生成PDF的动作类。该适当地设定。 我 通过Ajax调用来称呼它。我不知道将流传输到浏览器的方法。我尝试了几件事,但没有任何效果。 上面给出了错误: 您的浏览器发送了该服务器无法理解的请求。 问题答案: 您不必为此使用Ajax。只是一个环节是不够的,如果你设置到服务器端代码。这样,如果您最关心的是父页面将保持打开状态(为什么您会为此而不必要地选择Ajax?)。此外,没有办法很好

  • 我无法找到正确的方法来实现我的目标,即下载带有java selenium脚本的pdf。