我正在尝试Ajax下载PDF。以下是我的Ajax代码:
$.ajax({
// `url`
url: "/pdf/download",
type: "GET",
contentType: "application/octet-stream; charset=utf-8",
// `custom header`
headers: {
"OAuth-Token": api.getOAuthToken()
},
beforeSend: function (jqxhr) {
console.log(this.headers);
alert("custom headers" + JSON.stringify(this.headers));
},
success: function (data) {
// `file download`
$("a")
.attr({
"href": data.file,
"download": "file.pdf"
})
.html($("a").attr("download"))
.get(0).click();
//console.log(JSON.parse(JSON.stringify(data)));
},
error: function (jqxhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown)
}
});
以下是我的PHP标题脚本:
$api->setHeader('Content-Transfer-Encoding', 'binary');
$api->setHeader('Cache-Control', 'public, must-revalidate, max-age=0');
$api->setHeader('Pragma', 'public');
$api->setHeader('Expires', 'Sat, 26 Jul 1997 05:00:00 GMT');
$api->setHeader('Last-Modified', $now->format(TimeDate::RFC2616_FORMAT));
$api->setHeader('Content-Type', 'application/pdf');
$api->setHeader(
'Content-Disposition',
'attachment; filename="' . getPdfName() . '.pdf"'
);
以上使用OAuth-Tocken的Ajac调用工作正常,但我接收到如下输出,并且PDF有空并且有时会打开。
%PDF-1.4%âÏÓ30 obj<
以上返回数据只是返回数据的样本。有人可以告诉我如何从数据中创建一个valide PDF?
注意:我正在尝试使用此方法,因为我无法在最新更新后在SugarCRM中下载sugarcrm fileDownload error after upgrade。