如何在 zip 文件存档器中创建文件夹 - node.js

问题描述 投票:0回答:3

我想创建一个

zip
文件并在其中创建新的
folder
。 我创建了 zip 文件,但无法创建文件夹。

这是我的

node.js
代码;

var archiver = require('archiver');
var zip = archiver('zip');

for(var i=0; i < files.length; i++){
     zip.append(new Buffer(files[i].data.buffer), { name: files[i].name } );    
}

例如我想创建文件夹

/first/second
并在其中添加文件。

.zip
  first(folder)
     second(folder)
        file

我该怎么做?

javascript node.js zip directory archive
3个回答
6
投票

实际上,我只是意识到通过编辑以下行中的名称字段非常简单;

zip.append(new Buffer(files[i].data.buffer), { name: files[i].name } );    

zip.append(new Buffer(files[i].data.buffer), { name: "/folderName/" + files[i].name } );    

您可以将

/folderName/
替换为您要创建的任何文件名。


0
投票

https://www.npmjs.com/package/mkdirp

创建文件夹的节点模块


0
投票

也许

prefix
属性比将路径连接到
name
属性更优雅。

// node_modules/.store/@[email protected]/node_modules/@types/archiver/index.d.ts

interface EntryData {
    /** Sets the entry name including internal path */
    name: string;
    /** Sets the entry date */
    date?: Date | string | undefined;
    /** Sets the entry permissions */
    mode?: number | undefined;
    /**
     * Sets a path prefix for the entry name.
     * Useful when working with methods like `directory` or `glob`
     */
    prefix?: string | undefined;
    /**
     * Sets the fs stat data for this entry allowing
     * for reduction of fs stat calls when stat data is already known
     */
    stats?: fs.Stats | undefined;
}

// my code
archive.append(
  'Hello World',
  // same as => { name: 'resource/documents/xxx.json' },
  { prefix: 'resource/images', name: 'xxx.png' },
)         

https://i.stack.imgur.com/UMSXz.png

© www.soinside.com 2019 - 2024. All rights reserved.