gpt4 book ai didi

JAVASCRIPT将base64字符串(这是一个编码的zip文件)解码为zip文件并按名称获取zip文件内容

转载 作者:行者123 更新时间:2023-11-28 17:38:48 25 4
gpt4 key购买 nike

问题说明了一切,我从服务器接收到一个base64编码的ZIPFILE,我首先想将其解码为内存中的ZIPFILE,然后获取ZIPFILES内容,这是一个json文件。

我尝试使用 JSZIP,但在这种情况下我完全迷失了......base64 字符串是通过 JavaScript 接收的。

简而言之,我的问题是:如何将 base64 编码的 ZIPFILE 转换为内存中的 ZIPFILE 以获取其内容。

BASE64 -> 压缩文件 -> 内容

我使用这个复杂的过程来节省数据库的大量空间。我不想在服务器端处理这个过程,而是用 JS 在客户端处理。

提前致谢!

最佳答案

如果有人对我的解决方案感兴趣,请阅读我的答案:

我收到了 Base64 字符串格式的数据,然后将该字符串转换为 Blob。然后我使用 blob-handle 通过 JSZip-Library 加载 zip 文件。之后我就可以获取 zip 文件的内容了。代码如下:

function base64ToBlob(base64) {
let binaryString = window.atob(base64);
let binaryLen = binaryString.length;

let ab = new ArrayBuffer(binaryLen);
let ia = new Uint8Array(ab);
for (let i = 0; i < binaryLen; i++) {
ia[i] = binaryString.charCodeAt(i);
}

let bb = new Blob([ab]);
bb.lastModifiedDate = new Date();
bb.name = "archive.zip";
bb.type = "zip";

return bb;
}

获取 zip 文件的内容:

            let blob = base64ToBlob(resolved);
let zip = new JSZip();
zip.loadAsync(blob).then(function(zip) {
zip.file("archived.json").async("string").then(function (content) {
console.log(content);
// content is the file as a string
});
}).catch((e) => {

});

如您所见,首先从 base64 字符串创建 blob。然后该句柄被交给 JSZip loadAsync 方法。之后,您必须设置要从 zip 文件中检索的文件的名称。在本例中,它是名为“archived.json”的文件。现在,由于 async("string") 函数,文件(文件内容)以字符串形式返回。要进一步使用提取的字符串,只需使用内容变量即可。

关于JAVASCRIPT将base64字符串(这是一个编码的zip文件)解码为zip文件并按名称获取zip文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48450962/

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