如何从节点js服务器下载zip文件夹

wzw*_*zwd 0 javascript download node.js

我在一个文件夹中有文件,我想从节点 js 服务器下载文件夹。我尝试了一些代码,但它不起作用。我得到了一些关于下载(下载文件夹如何压缩文件夹)文件夹的示例,但它们对我不起作用或我不理解它们。

I have folder like:
    Allfilefolder
        -file1.js
        - file2.js
        -file3.js
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法下载每个文件:

app.get("/files/downloads", function(req,res){ 
      const fs = require('fs');
    var filepath = './Allfilefolder/file1.js'; 
    res.download(filepath ); 
});
Run Code Online (Sandbox Code Playgroud)

但我不知道如何下载文件夹。有什么帮助吗?

TGr*_*rif 5

假设您已经安装了一个 zip 软件并可从您的应用程序访问,一种方法是使用 Node.js child_process,这样您甚至不必使用外部库。

这是一个基本示例,灵感来自这个简洁有效的答案:

// requiring child_process native module
const child_process = require('child_process');

const folderpath = './Allfilefolder';

app.get("/files/downloads", (req, res) => {

  // we want to use a sync exec to prevent returning response
  // before the end of the compression process
  child_process.execSync(`zip -r archive *`, {
    cwd: folderpath
  });

  // zip archive of your folder is ready to download
  res.download(folderpath + '/archive.zip');
});
Run Code Online (Sandbox Code Playgroud)

您还可以查看 npm存储库中的包,这些包将更健壮地处理归档文件或目录。