gpt4 book ai didi

javascript - 将字节数组写入文件 JavaScript

转载 作者:行者123 更新时间:2023-12-05 00:38:42 26 4
gpt4 key购买 nike

我有以字节数组形式返回文档的 Java REST Web 服务,我需要编写 JavaScript 代码来获取 Web 服务的响应并将其写入文件以便将该文件下载为 PDF 请查看 Web 服务响应的屏幕截图并查看我的示例代码 此代码下载损坏的 PDF 文件。

var data = new FormData();
data.append('PARAM1', 'Value1');
data.append('PARAM2', 'Value2');
var xhr = new XMLHttpRequest();
xhr.open('POST', 'SERVICEURL');
xhr.withCredentials = true;
xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password"));
xhr.onload = function() {

console.log('Response text = ' + xhr.responseText);
console.log('Returned status = ' + xhr.status);


var arr = [];
arr.push(xhr.responseText);

var byteArray = new Uint8Array(arr);
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob(byteArray, { type: 'application/octet-stream' }));
a.download = "tst.pdf";
// Append anchor to body.
document.body.appendChild(a)
a.click();
// Remove anchor from body
document.body.removeChild(a)

};
xhr.send(data);
enter image description here

最佳答案

由于您正在请求二进制文件,因此您也需要告诉 XHR taht,否则它将使用默认的“文本”(UTF-8)编码,将 pdf 解释为文本并会混淆编码。只需分配 responseType属性 pdf 的 MIME 类型

var xhr = new XMLHttpRequest();
xhr.responseType = 'blob'; // tell XHR that the response will be a pdf file

// OR xhr.responseType = 'application/pdf'; if above doesn't work

您将使用 response 访问它属性(property)而不是 responseText .
所以你将使用 arr.push(xhr.response);它会返回一个 Blob。

如果这不起作用,请通知我将更新另一个解决方案。

更新:
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob'; // tell XHR that the response will be a pdf file
xhr.onload = function() {
var blob = this.response;
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(blob);
a.download = "tst.pdf";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};

关于javascript - 将字节数组写入文件 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52132798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com