Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Simple JSZip-从现有图像创建Zip文件_Javascript_Jszip - Fatal编程技术网

Javascript Simple JSZip-从现有图像创建Zip文件

Javascript Simple JSZip-从现有图像创建Zip文件,javascript,jszip,Javascript,Jszip,我很难找到不涉及Base64或NodeJS的简单JSZip文档。基本上,我有一个目录,其中是test.html和一个名为“images”的文件夹。文件夹中有一堆图像。我想用那个文件夹制作一个zip文件 有谁能帮我写一些非常简单的“hello world”类型代码吗?上的文档包括从Base64数据添加图像或添加用JavaScript创建的文本文件等内容。我想从现有文件创建一个.zip文件 也许使用JSZip向.zip文件添加图像的唯一支持是通过Base64数据添加图像?我在文档中的任何地方都没有看

我很难找到不涉及Base64或NodeJS的简单JSZip文档。基本上,我有一个目录,其中是test.html和一个名为“images”的文件夹。文件夹中有一堆图像。我想用那个文件夹制作一个zip文件

有谁能帮我写一些非常简单的“hello world”类型代码吗?上的文档包括从Base64数据添加图像或添加用JavaScript创建的文本文件等内容。我想从现有文件创建一个.zip文件

也许使用JSZip向.zip文件添加图像的唯一支持是通过Base64数据添加图像?我在文档中的任何地方都没有看到,也没有image-url-to-base64函数,尽管我在StackOverflow的其他地方找到了一个


有什么建议吗?

在浏览器中,您可以使用ajax请求并使用
responseType
属性来获取arraybuffer(如果您需要IE 9支持,您可以使用例如):

这个示例是有限的,因为它只处理一个文件并手动创建xhr对象(我没有使用任何库,因为您没有提到任何库),但应该向您展示如何执行该操作

您可以在中找到一个更完整的示例:它使用jquerypromises和jszip utils下载文件列表,然后触发下载


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

看起来不错,谢谢!这仍然是一种疯狂的方式…我期望从库中得到更多,或者至少是一个本机的“传入文件,传入.zip的位置”函数。我想使用XHR是可行的!如果是远程文件,则必须使用ajax请求:)(自己创建xhr或使用库)。如果您不想直接使用xhr,您可以使用类似(免责声明:我曾经使用过这个)的库或任何其他可以处理二进制内容的ajax库(这并不容易,例如,它需要IE9上的vbscript)。
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();