0

我在下面写了压缩目录:

const archiver = require('archiver');
let createArchive = function(sourceDir, destDir) {
    const archive = archiver('zip');
    const stream = fs.createWriteStream(destDir);
    return new Promise((resolve, reject) => {
    archive
      .directory(sourceDir, false)
      .on('error', err => reject(err))
      .pipe(stream)
    ;

    stream.on('close', () => resolve());
    archive.finalize();
  });
}

在压缩我的目录之前看起来像这样:

  • excel存档.zip
  • 测试.txt
  • 测试2.gz

当我解压缩存档(称为yayy.zip)时,其中包含以下文件:

  • excel存档.zip
  • 测试.txt
  • 测试2.gz
  • 耶耶.zip

yayy.zip里面调用了一个无效文件。我怎样才能避免这种情况?

4

1 回答 1

1

代替directory,您可以使用glob方法指定要压缩的文件。它需要第二个参数,您可以在其中指定要忽略的文件。

const archiver = require('archiver');
let createArchive = function(sourceDir, destDir) {
    const archive = archiver('zip');
    const stream = fs.createWriteStream(destDir);
    return new Promise((resolve, reject) => {
    archive
      .on('error', err => reject(err))
      .pipe(stream)
      .glob(
        '**/*',
        {cwd: sourceDir, ignore: filename}
      )
    ;

    stream.on('close', () => resolve());
    archive.finalize();
  });
}
于 2021-09-15T22:45:59.490 回答