如何使用javascript从二进制字符串构建文件

时间:2014-02-19 11:40:04

标签: javascript ajax download binary-data

我正在尝试使用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。

2 个答案:

答案 0 :(得分:0)

从客户端即JavaScript中无法做到。

必须更改服务器端编码,以便生成URL链接(指向pdf文件)并作为响应的一部分发送。用户可以从URL链接下载pdf。

答案 1 :(得分:0)

您无法使用javascript创建文件,JavaScript无法访问编写文件,因为这至少可以说是一个巨大的安全风险。

要实现您的功能,您可以实现针对所需文件的点击事件,并询问是否将该文件保存到用户。