是否有一个javascript库可以用来合并2个或更多的zip文件而不解压缩它们

Is there a javascript library that can be used to merge 2 or more zip files without unzipping them

本文关键字:文件 zip 解压缩 javascript 有一个 2个 合并 是否      更新时间:2023-09-26

是否有一个javascript库可以用来合并2个或更多的zip文件到一个新的zip文件,而不需要先解压缩它们。我一直在找,但没能找到。


我正在补充这个问题,因为我没有得到很好的答案。

首先,这是可能的,并且已经在几种不同语言的库中完成了(特别是合并zip文件而不首先提取它们)。这是由于zip格式的工作方式,请去阅读它,而不是告诉我这是不可能的。

其次,请不要张贴链接到随机zip库,我特别需要合并两个zip文件在一起,而不是任何其他zip相关的功能。

最后,我真的不关心解决方案是客户端还是服务器端(或什么个人感受关于这个主题是),我只需要在javascript中做它。

提前感谢

小提琴:https://mikethedj4.github.io/kodeWeave/editor/#ca2d1692722e8f6c321c322cd33ed246

经过几个小时和失败的尝试后,我终于让它与JSZip一起工作了!

JavaScript

:

// Set Sample URL
document.getElementById("zipurl").value = "https://mikethedj4.github.io/kodeWeave/editor/zips/font-awesome.zip";
$(".loadzipurl").on("click", function() {
  if ( (!document.getElementById("zipurl").value) ) {
    // Do nothing
    console.error("Unable to perform operation as value is blank!");
  } else {
    if ( (document.getElementById("zipurl").value.toLowerCase().substring(0,7) === "http://" ) || (document.getElementById("zipurl").value.toLowerCase().substring(0,8) === "https://") ) {
      JSZipUtils.getBinaryContent(document.getElementById("zipurl").value, function(error, repoFiles) {
        if(error) {
          throw error // or handle err
        }
        var webAppZipBinary = repoFiles;
        // Download as Windows App
        JSZipUtils.getBinaryContent("https://mikethedj4.github.io/kodeWeave/editor/zips/YourLinApp.zip", function(err, data) {
          if(err) {
            throw err // or handle err
          }
          console.log("Creating application!");
          var zip = new JSZip();
          zip.load(data);
          // Your Web Application
          zip.folder("HELLOMOMMY/").load(webAppZipBinary);
          // For 32bit Windows Application
          zip.file("package.json", '{'n  "main"  : "index.html",'n  "name"  : "test",'n  "window": {'n      "toolbar" : false,'n      "icon"    : "app/icons/128.png",'n      "width"   : 1000,'n      "height"  : 600,'n      "position": "center"'n  }'n}');
          zip.file("index.html", '<!doctype html>'n<html>'n <head>'n    <title>test</title>'n    <style>'n      iframe {'n        position: absolute;'n        top: 0;'n        left: 0;'n        width: 100%;'n        height: 100%;'n        overflow: visible;'n        border: 0;'n      }'n    </style>'n  </head>'n <body>'n    <iframe src="app/index.html"></iframe>'n  </body>'n</html>');
          // Export your application
          var content = zip.generate({type:"blob"});
          saveAs(content, "test-win.zip");
          return false;
        });
      });
    } else {
      console.error("Error! '"http://'" and '"https://'" urls are only supported!");
    }
  }
});

:

<input type="text" id="zipurl" placeholder="http://">
<button class="loadzipurl">Export Application</button>

几天前,客户端完全不支持文件处理(我的意思是使用JavaScript),但现在部分支持,但有一些限制。你可以使用HTML 5 API阅读图片/pdf文件等。但我仍然怀疑,我们可以做这样的操作(提取或合并zip文件)在客户端。

我建议在服务器端做这些事情