繁体   English   中英

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

[英]How to get the ZIP file from Base64 string in Javascript?

我正在尝试用Javascript重新获得压缩的ZIP文件。 我可以将zip文件转换为Base64 String格式。 (压缩文件在服务器中)

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

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文件。 我通过互联网搜索,但不知道。

这是可以实现的吗?

这是可以实现的。 首先,您必须将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压缩,以便压缩任何输出文本。 然后,大多数浏览器会在数据到达时解压缩数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM