gpt4 book ai didi

javascript - 将作为unit8array接收到的数据流作为pdf保存到前端的文件系统中

转载 作者:行者123 更新时间:2023-12-03 03:26:49 27 4
gpt4 key购买 nike

const reader = response.body.getReader();
reader.read()
.then(({ done, value }) => {
var link = document.createElement("a");
value = window.btoa(value) //<-tried with and without
link.download = "test.pdf";
link.href = 'data:application/pdf;base64,'+value
link.click();
// console.log(window.atob(value))
})

这只是保存一个 pdf 文件,其中没有任何内容/不可读。

回调中的值是读取到数据流中的pdf文件的unicode,因此它只是unit8array中的一堆数字。我尝试将其转换为 base64 并通过数据 uri 下载它,但没有任何运气。

顺便说一句,这是在 Electron 应用程序中

编辑:

当我从后端接收数据时,请求将其显示为 unicode,但响应将其作为可读流提供给我。我 100% 确定我能够解析 unicode 并从中保存 PDF 文件,但我不知道如何从给定的可读流中获取 unicode 形式。

最佳答案

尝试为文件命名:

link.name = "file.pdf";

然后使用base64来制作数据URI。如果这不起作用,请尝试将数据 URI 设置为如下所示:

'data:application/octet-stream;charset=utf-16le;base64,' + value;

如果可能的话,调试 dataURI 可能是值得的,您获得的数据可能会从一开始就被损坏,这会让您陷入困境。

您还可以尝试将 Uint8Array 转换为 File 对象:

var arr = [];
var arr.push(value);
var pdf = new File(arr, 'test.pdf', {type: 'application/pdf'});

然后将其附加到 FormData 对象并将其发布到您的服务器。编辑* 哎呀没有看到你用 Electron 来做这件事,所以我不确定上述内容是否适用,但它可能仍然有帮助。祝你好运!

关于javascript - 将作为unit8array接收到的数据流作为pdf保存到前端的文件系统中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46285724/

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