您好,登錄后才能下訂單哦!
本篇內容介紹了“nodejs中archiver如何用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在nodejs中,archiver用于將一些文件壓縮打包成zip格式或tar格式的壓縮包;archiver是一個能跨平臺實現打包功能的模塊,打包的格式是zip和tar,可以利用“npm install archiver”語句在使用前安裝該模塊。
本文操作環境:Windows10系統、nodejs 12.19.0版、Dell G3電腦。
有時候我們需要將一些文件壓縮打包成zip格式或tar格式的壓縮包,也有可能需要將目錄進行打包。在Node.js中就可以用到archiver這個第三方包來進行操作。
archiver是一個在nodejs中能跨平臺實現打包功能的模塊,可以打zip和tar包,是一個比較好用的三方模塊。
使用前先安裝archiver模塊。
代碼如下:
npm install archiver
引入:
// 由于需要讀取文件所以需要fs模塊,也必須導入 const fs = require('fs'); const archiver = require('archiver');
基本使用如下:
// 第一步,導入必要的模塊 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();
執行代碼成功后,就會在項目的所在目錄下生成一個名為hello.zip壓縮包,該壓縮包內就是壓縮的文件hello.txt。
壓縮文件可以使用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()
來完成。API如下:
// 將指定目錄打包壓縮到壓縮包中,并且重命名為new-subdir,并且subdir目錄下的所有文件仍然在new-subdir目錄下,而不是在壓縮包的根目錄下 archive.directory('subdir/', 'new-subdir'); // 將指定目錄下的所有文件打包壓縮到壓縮包中,而這些文件在壓縮包的根目錄,而非子目錄中 archive.directory('subdir/', false);
完整實例如下:
// 第一步,導入必要的模塊 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();
“nodejs中archiver如何用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。