c# - 如何从 JavaScript 中的 Base64 字符串获取 ZIP 文件?

标签 c# javascript json zip

我正在尝试用 Javascript 恢复压缩的 ZIP 文件。我能够将 zip 文件转换为 Base64 字符串格式。 (Zip 文件位于服务器中)

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

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();

关于c# - 如何从 JavaScript 中的 Base64 字符串获取 ZIP 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532609/

相关文章:

c# - 引用一个命名空间,而当前命名空间中有一个相同的命名空间

c# - 使用 WCF 向客户端触发事件

c# - 如何在 Windows 7 中获取最近文档列表?

javascript - 验证jsp中的两个serializeArray是否具有相同的值

javascript - 将 localstorage 对象放入变量中

javascript - NUXT如何将数据从页面传递到布局

javascript - 如何从 angularjs 中的 JSON 数组动态生成列标题和表值?

c# - WMI 提供程序程序集中的 RunInstaller 属性

ios - Swift 3 中对象的序列化和反序列化

javascript - 将 JSON 数组从 Django View 返回到模板