如何在Javascript中从Base64字符串中获取ZIP文件

本文关键字:获取 ZIP 文件 字符串 Base64 Javascript 中从 | 更新日期: 2023-09-27 18:11:05

我试图得到压缩的ZIP文件回到Javascript。我能够将zip文件转换为Base64字符串格式。(压缩文件在服务器中)

这是我的尝试(在服务器端)

System.IO.FileStream fs = new System.IO.FileStream(SourceFilePath + "Arc.zip", System.IO.FileMode.Open);
Byte[] zipAsBytes = new Byte[fs.Length];
fs.Read(zipAsBytes, 0, zipAsBytes.Length);
String base64String = System.Convert.ToBase64String(zipAsBytes, 0, zipAsBytes.Length);
fs.Close();
if (zipAsBytes.Length > 0)
{
    _response.Status = "ZipFile";
    _response.Result = base64String;
}
return _json.Serialize(_response);

这部分代码返回JSON数据。这个JSON数据包括Base64字符串。现在我要做的是从Base64字符串中获取原始zip文件。我在网上搜索了一下,但没有得到这个想法。

这是可行的吗?

如何在Javascript中从Base64字符串中获取ZIP文件

这是可以实现的。首先,必须将Base64字符串转换为Arraybuffer。可以用这个函数来完成:

function base64ToBuffer(str){
    str = window.atob(str); // creates a ASCII string
    var buffer = new ArrayBuffer(str.length),
        view = new Uint8Array(buffer);
    for(var i = 0; i < str.length; i++){
        view[i] = str.charCodeAt(i);
    }
    return buffer;
}
然后,使用JSZip之类的库,可以将ArrayBuffer转换为Zip文件并读取其内容:
var buffer = base64ToBuffer(str);
var zip = new JSZip(buffer);
var fileContent = zip.file("someFileInZip.txt").asText();
  • JavaScript没有这个功能。
  • 理论上可以有一些js库做到这一点,但它的大小可能会比原始文本文件本身更大。
  • 您还可以在服务器上启用gzip压缩,以便压缩任何输出文本。大多数浏览器会在数据到达时解压缩数据。