我想创建一个
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
我该怎么做?
实际上,我只是意识到通过编辑以下行中的名称字段非常简单;
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/
替换为您要创建的任何文件名。
https://www.npmjs.com/package/mkdirp
创建文件夹的节点模块
也许
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' },
)