【问题标题】:How to build a file from binary string using javascript如何使用javascript从二进制字符串构建文件
【发布时间】:2014-02-19 11:40:04
【问题描述】:

我正在尝试使用 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的内容,所以为了让用户下载文件,我在success函数里加了这几行:

var uriContent = "data:application/pdf; base64," + encodeURIComponent(mypdf);
var newWindow=window.open(uriContent, 'generated');

但我只有一个 ERR_INVALID_URL,或者当我从 uriContent 中删除“base64”时打开生成的文件时失败。

有人知道如何使用数据响应吗?我去了here,但这并没有帮助。 谢谢!

。比约尔。

【问题讨论】:

  • 恐怕,客户端(即 JavaScript)无能为力。必须更改服务器端编码,以便生成 url 链接(指向 pdf 文件)并作为响应的一部分发送。用户可以从 url 链接下载 pdf。

标签: javascript ajax download binary-data


【解决方案1】:

从客户端(即 JavaScript)无能为力。

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

【讨论】:

  • 我知道我无法在服务器上创建文件,但我认为我可以使用其内容生成文件。不幸的是,我无法实现针对我的文件的单击事件,因为它在服务器上没有物理存在,它是由 BusinessObject 动态生成的。还是非常感谢 ! .比约尔。
【解决方案2】:

您不能使用 javascript 创建文件,JavaScript 无权写入文件,因为这至少可以说是一个巨大的安全风险。

为了实现您的功能,您可以实现点击事件,该事件针对您所需的文件,它会询问是否将该文件保存给用户。

【讨论】:

  • 我知道我无法在服务器上创建文件,但我认为我可以使用其内容生成文件。不幸的是,我无法实现针对我的文件的单击事件,因为它在服务器上没有物理存在,它是由 BusinessObject 动态生成的。还是非常感谢 ! .比约尔。
猜你喜欢
  • 2012-10-04
  • 2016-02-10
  • 2011-06-10
  • 2019-07-28
  • 2011-09-09
  • 1970-01-01
相关资源
最近更新 更多