使用ajax从字节数组下载PDF

Download PDF from Byte array using ajax

本文关键字:数组 下载 PDF 字节数 字节 ajax 使用      更新时间:2023-09-26

我正在尝试下面的代码,但这是创建文件,但不显示内容。我需要你的帮助,我做错了什么。

    $.ajax({
    type: "POST",
    async : false,
    url: "/searchModel/createPDF",
    data:"my_param",
    contentType: 'application/octet-stream',  
    beforeSend:function(){
    }, 
    success: function(html) {
        /* html value is [37,80,68,75 .........] */
        //var file = new Blob([html], {type: 'application/pdf'});
        //var fileURL = URL.createObjectURL(file);
        //window.open(fileURL);
        var blob=new Blob([html],{type: 'application/pdf'});
        var link=document.createElement('a');
        link.href=window.URL.createObjectURL(blob);
        link.download="SearchedResults.pdf";
        link.click();
    }
 }); 

来自服务器的响应是字节数组[37,80,68,75 .........]

请帮助我,如果数据在字节数组如何转换为pdf。

不能使用AJAX下载文件。这说不通啊。您可以在客户端的成功处理程序中发送AJAX请求并获取文件内容,但是出于明显的安全原因,您不能对它做太多事情。你不能在客户端计算机上保存它,也没有javascript API允许你提示用户在哪里保存它。

所以下载文件时,不要使用AJAX。创建一个指向服务器端脚本的锚点,该脚本提供要下载的文件。

样本:

window.downloadfile = function(e){
  window.location = "/searchModel/createPDF?" +  "my_param";
}
<a href="#" onclick="downloadfile()">download file</a>

是的,你们说正确并不意味着使用AJAX下载PDF。

 window.location = "/searchModel/createPDF?" + "my_param";

就足够了,我们只需要从服务器端呈现pdf。它是默认可下载的。谢谢你的建议