Maison >interface Web >Questions et réponses frontales >Comment utiliser l'archiveur dans nodejs
Dans nodejs, l'archiveur est utilisé pour compresser et empaqueter certains fichiers dans des packages compressés au format zip ou tar ; l'archiveur est un module qui peut implémenter des fonctions d'empaquetage sur toutes les plates-formes. Les formats d'empaquetage sont zip et tar. archiver » pour installer le module avant utilisation.
L'environnement d'exploitation de cet article : système Windows 10, nodejs version 12.19.0, ordinateur Dell G3.
Parfois, nous devons compresser et conditionner certains fichiers dans des packages compressés au format zip ou tar, et nous pouvons également avoir besoin de conditionner le répertoire. Dans Node.js, vous pouvez utiliser l'archiveur de packages tiers pour effectuer des opérations.
archiver est un module qui peut réaliser une fonction d'empaquetage multiplateforme dans nodejs. Il peut créer des packages zip et tar. Il s'agit d'un module tiers relativement facile à utiliser.
Installez le module d'archives avant utilisation.
Le code est le suivant :
npm install archiver
Introduction :
// 由于需要读取文件所以需要fs模块,也必须导入 const fs = require('fs'); const archiver = require('archiver');
L'utilisation de base est la suivante :
// 第一步,导入必要的模块 const fs = require('fs'); const archiver = require('archiver'); // 第二步,创建可写流来写入数据 const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级 // 第三步,建立管道连接 archive.pipe(output); // 第四步,压缩指定文件 var stream = fs.createReadStream(__dirname + "/hello.txt");// 读取当前目录下的hello.txt archive.append(stream, {name: 'hello.txt'}); // 第五步,完成压缩 archive.finalize();
Une fois le code exécuté avec succès, un package compressé nommé hello.zip sera généré dans le répertoire où le projet se trouve. Il s'agit du fichier compressé hello.txt.
Les fichiers compressés peuvent être exploités en utilisant archive.append()
et archive.file()
. archive.append()
和archive.file()
来进行操作。
压缩单个文件的API如下:
// 添加一个文件到压缩包,通过可写流的方式读取数据附加文件 const file1 = __dirname + '/file1.txt'; archive.append(fs.createReadStream(file1), { name: 'file1.txt' }); //添加一个文件到压缩包,通过将字符串写入到文件的方式附加文件 archive.append('string cheese!', { name: 'file2.txt' }); // 添加一个文件到压缩包,通过Buffer数据的方式附加文件 const buffer3 = Buffer.from('buff it!'); archive.append(buffer3, { name: 'file3.txt' }); // 添加一个文件到压缩包,直接传入文件路径 archive.file('file1.txt', { name: 'file4.txt' });
完整的例子如下:
// 第一步,导入必要的模块 const fs = require('fs'); const archiver = require('archiver'); // 第二步,创建可写流来写入数据 const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级 // 第三步,建立管道连接 archive.pipe(output); // 第四步,压缩指定文件 archive.append(fs.createReadStream(__dirname + '/hello.txt'), {name: 'hello.txt'});// 文件流 archive.append('index.html', {name: 'index.html'});// 文件路径 archive.append(Buffer.from("这是Buffer格式的数据"), {name: 'buffer.txt'});// Buffer对象 archive.append("直接传入字符串", {name: 'string.txt'});// 字符串 // 第五步,完成压缩 archive.finalize();
注意:archive.append()
第二个参数{name: 'hello.txt'}
是对压缩包中对应的文件进行重命名。
如果要压缩多个文件,直接调用archive.append()
方法附加文件即可,这些附加的文件都会被添加到压缩包中。如例:
// 第一步,导入必要的模块 const fs = require('fs'); const archiver = require('archiver'); // 第二步,创建可写流来写入数据 const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级 // 第三步,建立管道连接 archive.pipe(output); // 第四步,压缩多个文件到压缩包中 archive.append('index.html', {name: 'index.html'}); archive.append('hello.js', {name: 'hello.js'}); archive.append('hello.html', {name: 'hello.html'}); archive.append('db.json', {name: 'db.json'}); // 第五步,完成压缩 archive.finalize();
如果要压缩目录,则需要使用archive.directory()
// 将指定目录打包压缩到压缩包中,并且重命名为new-subdir,并且subdir目录下的所有文件仍然在new-subdir目录下,而不是在压缩包的根目录下 archive.directory('subdir/', 'new-subdir'); // 将指定目录下的所有文件打包压缩到压缩包中,而这些文件在压缩包的根目录,而非子目录中 archive.directory('subdir/', false);L'exemple complet est le suivant :
// 第一步,导入必要的模块 const fs = require('fs'); const archiver = require('archiver'); // 第二步,创建可写流来写入数据 const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级 // 第三步,建立管道连接 archive.pipe(output); // 第四步,压缩目录到压缩包中 archive.directory('public/', 'new-public'); archive.directory('demo/', false); // 第五步,完成压缩 archive.finalize();Remarque :
archive.append()
Le deuxième paramètre {name: 'hello.txt'>
est pour la compression Renommez les fichiers correspondants dans le package. Si vous souhaitez compresser plusieurs fichiers, appelez simplement la méthode archive.append()
pour ajouter les fichiers, et ces fichiers supplémentaires seront ajoutés au package compressé. Par exemple : 🎜rrreee🎜🎜🎜 Compresser le répertoire🎜🎜Si vous souhaitez compresser le répertoire, vous devez utiliser archive.directory()
pour le compléter. L'API est la suivante : 🎜rrreee🎜L'exemple complet est le suivant : 🎜rrreee🎜🎜🎜🎜Apprentissage recommandé : "🎜tutoriel vidéo Nodejs🎜"🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!