Javascript 生成Zip文件包含不带JSZip库的文件列表

Javascript 生成Zip文件包含不带JSZip库的文件列表,javascript,jquery,Javascript,Jquery,各位开发者好, 我正试图从XMLHttpRequest()请求方法下载文件列表,并将其存储在文件数组中。我想使用javascript压缩数组中的所有文件,而不使用任何第三方库。 我试图通过URL.createObjectURL(URL)和URL.revokeObjectURL(URL)方法实现这一点,但我得到的文件已损坏 我正在分享我的代码片段,请帮帮我 const URLS = [ 'https://vr.josh.earth/assets/2dimages/satu

各位开发者好, 我正试图从XMLHttpRequest()请求方法下载文件列表,并将其存储在文件数组中。我想使用javascript压缩数组中的所有文件,而不使用任何第三方库。 我试图通过URL.createObjectURL(URL)和URL.revokeObjectURL(URL)方法实现这一点,但我得到的文件已损坏

我正在分享我的代码片段,请帮帮我

 const URLS = [
            'https://vr.josh.earth/assets/2dimages/saturnv.jpg',
            'https://vr.josh.earth/assets/360images/hotel_small.jpg',
            'https://vr.josh.earth/assets/360images/redwoods.jpg'
        ];
        $(document).ready(function () {
            debugger
            $("#downloadAll").click(function () {
                var blob = new Array();
                var files = new Array();
                URLS.forEach(function (url, i) {
                    getRawData(url, function (err, data) {
                        debugger
                        var mydata = data;
                        // mydata = btoa(encodeURIComponent(data));
                        // var blobData = b64toBlob(mydata , 'image/jpg');
                        var blobData = new Blob([mydata], { type: 'image/jpg' });
                        blob.push(blobData);
                        var filename = "testFiles" + i + ".jpg";
                        var file = blobToFile(blobData, filename);
                        files.push(file);

                        debugger
                        if (files.length == URLS.length) {
                            // saveData(blob, "fileName.zip");
                            var AllBlobData = new Blob([blob], { type: 'application/zip' });
                            saveData(AllBlobData, "Test.zip");
                            // saveFile("DownloadFiles.zip", "application/zip", files)

                        }
                    });
                });
            });

        });
//使用XMLHttpRequest()方法检索记录

//用于将文件保存到zip

  var saveData = (function () {
            var a = document.createElement("a");
            document.body.appendChild(a);
            a.style = "display: none";
            return function (data, fileName) {
                // var AllBlobs = new Blob([data], { type: "" });//application/zip  //octet/stream
                // var url = window.URL.createObjectURL(AllBlobs);
                var url = window.URL.createObjectURL(data);
                a.href = url;
                a.download = fileName;
                a.click();
                window.URL.revokeObjectURL(url);
            };
        }());
//下载的压缩文件


如果没有第三方,您需要自己实现zip archiver。没有图书馆你为什么需要它?另外,为什么您决定
createObjectURL
返回一个zip?我的客户机不想添加任何第三方库。这就是为什么,我尝试通过从这个链接找到这个解决方案()来实现这一点。没有第三方,您需要自己实现zip archiver。没有图书馆你为什么需要它?另外,为什么您决定
createObjectURL
返回一个zip?我的客户不想添加任何第三方库。这就是为什么,我尝试通过从这个链接找到这个解决方案来实现这一点()
  var saveData = (function () {
            var a = document.createElement("a");
            document.body.appendChild(a);
            a.style = "display: none";
            return function (data, fileName) {
                // var AllBlobs = new Blob([data], { type: "" });//application/zip  //octet/stream
                // var url = window.URL.createObjectURL(AllBlobs);
                var url = window.URL.createObjectURL(data);
                a.href = url;
                a.download = fileName;
                a.click();
                window.URL.revokeObjectURL(url);
            };
        }());