简单的JSZip - 从现有图像创建Zip文件

时间:2014-07-25 13:35:22

标签: javascript jszip

我很难找到JSZip的简单文档,但不涉及Base64或NodeJS。基本上,我有一个目录,其中有test.html和一个名为" images"的文件夹。在那个文件夹里面是一堆图像。我想从该文件夹中创建一个zip文件。

任何人都可以帮助我解决一些非常简单的问题世界"这个类型的代码? http://stuk.github.io/jszip/上的文档包括从Base64数据添加图像或添加您在JavaScript中创建的文本文件。我想从现有文件创建一个.zip文件。

使用JSZip向.zip文件添加图像的唯一支持可能是通过Base64数据添加它们吗?我在文档中没有看到任何内容,也没有看到image-url-to-base64函数,尽管我在StackOverflow上找到了其中一个。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

在浏览器中,您可以使用ajax请求并使用responseType属性获取数组缓冲区(如果您需要IE 9支持,则可以使用jszip-utils):

var xhr = new XMLHttpRequest();
xhr.open('GET', "images/img1.png", true);
xhr.responseType = "arraybuffer";
xhr.onreadystatechange = function(evt) {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            var zip = new JSZip();
            zip.file("images/img1.png", xhr.response);
        }
    }
};
xhr.send();

此示例 受限制,因为它只处理一个文件并手动创建xhr对象(我没有使用任何库,因为你没有提及任何库)但是应该告诉你怎么做。

您可以在JSZip documentation中找到更完整的示例:它使用jQuery promises和jszip-utils下载文件列表并在此之后触发下载。

如果使用库来处理ajax请求,请务必检查是否可以请求arraybuffer。默认设置是将响应视为文本,这将损坏您的图像。例如,jQuery应该支持它soon