Maison > interface Web > Questions et réponses frontales > Comment utiliser l'archiveur dans nodejs

Comment utiliser l'archiveur dans nodejs

WBOY
Libérer: 2022-06-29 16:00:54
original
2498 Les gens l'ont consulté

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.

Comment utiliser l'archiveur dans nodejs

L'environnement d'exploitation de cet article : système Windows 10, nodejs version 12.19.0, ordinateur Dell G3.

Comment utiliser l'archiveur dans nodejs

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
Copier après la connexion

Introduction :

// 由于需要读取文件所以需要fs模块,也必须导入
const fs = require('fs');
const archiver = require('archiver');
Copier après la connexion

Utilisation

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();
Copier après la connexion

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.
Comment utiliser larchiveur dans nodejs

Exemple

Compresser un seul fichier

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' });
Copier après la connexion

完整的例子如下:

// 第一步,导入必要的模块
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();
Copier après la connexion

Comment utiliser larchiveur dans nodejs
注意: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();
Copier après la connexion

Comment utiliser larchiveur dans nodejs

压缩目录

如果要压缩目录,则需要使用archive.directory()

L'API pour compresser un seul fichier est la suivante :

// 将指定目录打包压缩到压缩包中,并且重命名为new-subdir,并且subdir目录下的所有文件仍然在new-subdir目录下,而不是在压缩包的根目录下
archive.directory('subdir/', 'new-subdir');

// 将指定目录下的所有文件打包压缩到压缩包中,而这些文件在压缩包的根目录,而非子目录中
archive.directory('subdir/', false);
Copier après la connexion

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();
Copier après la connexion
Comment utiliser larchiveur dans nodejsInsérer la description de l'image ici Remarque : archive.append()Le deuxième paramètre {name: 'hello.txt'> est pour la compression Renommez les fichiers correspondants dans le package.

Compresser plusieurs fichiers

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🎜Insérer la description de l'image ici🎜🎜 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal