我正在尝试使用BusinessObject RESTful API下载生成的(pdf或xls)文档。
我正在使用以下请求:
$.ajax({
url: server + "/biprws/raylight/v1/documents/" + documentId,
type: "GET",
contentType: "application/xml",
dataType: "text",
headers: {"X-SAP-LogonToken": token, "Accept": "application/pdf" },
success: function(mypdf) {
// some content to execute
}
});
我收到这些数据作为回复:
%PDF-1.7
%äãÏÒ
5 0 obj
<</Length 6 0 R/Filter/FlateDecode>>
//data
//data
//data
%%EOF
我首先假设它是base64内容,所以为了让用户下载文件,我在成功函数中添加了这些行:
var uriContent = "data:application/pdf; base64," + encodeURIComponent(mypdf);
var newWindow=window.open(uriContent, 'generated');
但是当我从uriContent中删除“base64”时,我所拥有的只是一个ERR_INVALID_URL,或者在打开生成的文件时失败。
有没有人知道如何使用数据响应?我去了here但是没有帮助。 谢谢!
。 bjorge。
答案 0 :(得分:0)
从客户端即JavaScript中无法做到。
必须更改服务器端编码,以便生成URL链接(指向pdf文件)并作为响应的一部分发送。用户可以从URL链接下载pdf。
答案 1 :(得分:0)
您无法使用javascript创建文件,JavaScript无法访问编写文件,因为这至少可以说是一个巨大的安全风险。
要实现您的功能,您可以实现针对所需文件的点击事件,并询问是否将该文件保存到用户。