我正在尝试下面的代码,但这是创建文件但不显示内容。我需要你的帮助,我做错了什么。
$.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格式转换,请帮助我。
答案 0 :(得分:1)
您无法使用AJAX下载文件。它没有意义。您可以发送AJAX请求并在客户端上的成功处理程序中获取文件内容,但出于明显的安全原因,您无法对其进行任何操作。您无法将其保存在客户端计算机上,并且没有javascript API允许您提示用户保存位置。
所以要下载文件,不要使用AJAX。创建一个指向服务器端脚本的锚点,该脚本提供要下载的文件。
示例:
window.downloadfile = function(e){
window.location = "/searchModel/createPDF?" + "my_param";
}

<a href="#" onclick="downloadfile()">download file</a>
&#13;
答案 1 :(得分:0)
是的,你说人们说使用AJAX下载PDF并不正确。
window.location = "/searchModel/createPDF?" + "my_param";
就足够了,只需要从服务器端渲染pdf。它是默认可下载的。感谢您的建议