Használja az Archiver és Unzipper csomagokat a Node.js fájljainak tömörítéséhez és kibontásához.

A fájlarchiválás mindennapos tevékenység a modern világban, hiszen mindenki tanúsíthatja a fájlok vagy mappák kisebb, hordozható formátumokba tömörítésének előnyeit.

A ZIP formátum az egyik legnépszerűbb archív formátum a számítástechnika világában, és erősen ajánlott választás mindenki számára, akinek a nyers fájlokat archívummá kell konvertálnia a jobb tárolás, a hatékony átvitel vagy bármi más érdekében ok.

Miért érdemes tehát fontolóra vennie a fájlok tömörítését, és hogyan tömörítheti a fájlokat ZIP-be, és programozottan, a Node.js használatával csomagolhatja vissza eredeti állapotukba?

Miért érdemes a fájlokat tömöríteni?

Sokszor a fájlok és mappák nagyon nagyokká válnak, és megosztásuk vagy átvitelük problémát jelent, mert ilyenek vagy túl nagyok ahhoz, hogy meghatározott kapacitású tárolómeghajtón tárolják, vagy túl sokáig tart a felhőbe való feltöltésük tárolás.

Ilyen és sok más forgatókönyv esetén az ilyen fájlokat vagy mappákat sokkal kisebb méretre kell tömörítenie. Az egyszerűbb fájlátvitel mellett a fájlok tömörítésének további okai:

instagram viewer

  • Hatékony tárolás
  • Jobb fájlstruktúra és rendszerezés
  • Biztonság (fájltitkosítás és jelszavas védelem)
  • A fájl integritása
  • Fájl verziószámítás

Mik azok a Node.js Archiver és Unzipper csomagok?

A Archiváló A csomag hivatalos dokumentációja a csomagot "streaming interfészként archívum létrehozásához" írja le. Ez azt jelenti, hogy az Archiver csomag olyan függvénytárat biztosít, amely a Node.js adatfolyamokat használja fel tömörített fájlarchívumok létrehozásához.

Az Archiver csomag alapértelmezés szerint több archívumformátumot támogat, beleértve a ZIP-t, a GZIP-et és a TAR-t. A csomag lehetővé teszi fájlokból és könyvtárakból archívumok létrehozását, valamint a nagy archívumok kisebb részekre (többkötetes archívumok) felosztását is. Ezenkívül lehetővé teszi a fájlok kizárását vagy szűrését a tömörítés során.

A Kihúzza a cipzárt csomag egy nagyon hatékony csomag ZIP-archívumok kibontására a Node.js-ben. A csomag egy könnyen használható API-t biztosít, amely lehetővé teszi a fejlesztők számára, hogy mindössze néhány sornyi kóddal bontsanak ki ZIP-fájlokat.

Az Archiver és Unzipper csomagok a megfelelőek ehhez az oktatóanyaghoz, mert zökkenőmentesen integrálódnak a Node.js-be fs modult, biztosítva a zökkenőmentes kompatibilitást és egyszerűséget.

Fájlok tömörítése ZIP formátumba a Node.js-ben

Fájlok tömörítése Az Archiver csomagnak köszönhetően a ZIP formátumba való áthelyezése a Node.js-ben egyszerű, mint bármely más nyelven. Ha ZIP-archívumokat szeretne létrehozni a Node.js-ben, miközben követi ezt a szakaszt, be kell állítania egy Node.js fejlesztői környezetet a számítógépén.

Létre kell hoznia egy egyszerű Node.js szkriptet a fájlok és mappák ZIP formátumba tömörítéséhez. Hozzon létre egy új Node projektet a számítógépén a következő parancsok futtatásával:

mkdir node-zip-archiver
CD node-zip-archiver
npm init -y

Ezután telepítenie kell az Archiver csomagot a projektben. Fuss npm archiváló telepítése -- mentés a termináljában a telepítéshez. Ha a csomag telepítése befejeződött, hozzon létre egy új fájlt a projektkönyvtárban, és nevezze el saját ízlése szerint, pl. app.js vagy archiver.js.

A fs modul kezeli a fájlműveleteket, míg az Archiver csomag a fájlok és mappák ZIP archívumba tömörítését kezeli, ezért a szkriptnek mindkét modulra szüksége van.

ZIP-archívumok létrehozása fájlokból

A következő kód egy olyan függvény megvalósítása, amely elfogad egy fájlt argumentumként, és létrehozza a fájl tömörített ZIP-változatát.

const archiváló = igényelnek("archiváló")
const fs = igényelnek("fs")

// ZIP létrehozása fájlból
const createZipFromFile = (fájlt) => {
const filePath = __dirname + '/' + fájl
const output = fs.createWriteStream (filePath + '.postai irányítószám')
const archívum = archiváló('postai irányítószám', {
zlib: { szint: 9 } // a tömörítési szint beállítása a legmagasabbra
})

archívum.pipe (kimenet);
archívum.file (filePath, { név: fájl })
archive.finalize()
}

A függvény a tömörítendő fájl fájlnevét veszi fel, és egy hasonló nevű kimeneti fájlt generál (az egyetlen különbség a ZIP fájl kiterjesztése).

Ezután a függvény létrehoz egy új archívumot 9-es (legmagasabb) tömörítési szinttel, és felhasználja a cső funkció az archívum kimeneti adatfolyamainak átviteléhez a kimeneti fájl bemenetére.

A fájlt függvény hozzáad egy fájlt az archívumhoz. Elfogadja a fájl elérési útját paraméterként és opcionális lehetőségek paraméter, ahol megadhatja az archívumban lévő fájl tulajdonságait.

A név Az opció kijelöli az archívumban lévő fájl nevét. Ha a beállítás nincs megadva, amikor egy fájlt ad hozzá az archívumhoz, az Archiver a fájlt az archívumban helyezi el az eredeti elérési útja alapján, megőrizve a könyvtárszerkezetet.

Ha azonban ez kifejezetten meg van adva, az Archiver hozzáadja a fájlt az archívumhoz az eredeti elérési út nélkül, lehetővé téve az archívumon belüli egyéni elnevezést és rendszerezést.

ZIP-archívumok létrehozása mappákból

A ZIP-archívumok mappákból történő létrehozásának folyamata nem sokban különbözik a fájlokétól. A fő különbség az Archiver csomag használata Könyvtár funkcióval szemben fájlt az előző funkcióban.

Az alábbiakban egy mappa ZIP-archívumba tömörítésére szolgáló funkció megvalósítása látható.

// ZIP létrehozása mappából
const createZipFromFolder = (mappát) => {
const folderPath = __dirname + '/' + mappa
const output = fs.createWriteStream (folderPath + '.postai irányítószám')

const archívum = archiváló('postai irányítószám', {
zlib: { szint: 9 } // a tömörítési szint beállítása a legmagasabbra
})

archive.pipe (kimenet)
archive.directory (folderPath, hamis)
archive.finalize()
}

A Könyvtár A függvény első argumentumának a mappa elérési útját, második argumentumának pedig egy flaget veszi fel. A zászló határozza meg a mappa elhelyezését az archívumban.

Amikor a zászló a következőre van állítva hamis, az így létrejövő archívum csak a mappa tartalmát fogja tartalmazni, magát a mappát nem. De ha a zászló be van állítva igaz, Az Archiver magát a mappát is belefoglalja a létrehozott archívumba

Ha szeretné elkerülni, hogy a tömörített archívumból származó fájlokkal beszennyezze az archívum kibontásának helyét, érdemes megfontolni a zászló opciót igaz. Azonban beállíthatja hamis, ha jobban megfelel céljainak.

Fájlok kicsomagolása a Node.js-ben

A ZIP-fájlok Node.js-ben való kibontásának folyamata többféle megközelítést is kínál, és több könyvtár is használható, de ebben a cikkben az Unzipper csomagot használjuk.

Futtassa a következő parancsot a terminálon az Unzipper csomag telepítéséhez a projektben.

npm install unzipper --save

A csomag telepítése után importálja azt a kódjába, és hajtsa végre az alábbi kódban látható ZIP kibontási funkciót:

const kihúzó cipzár = igényelnek("kihúzó cipzár")

// függvény a ZIP fájl kibontásához
const extractZip = async (fájl) => {
const filePath = __dirname + '/' + fájl
const outputPath = __dirname + '/kivont'
várja fs.createReadStream (filePath)
.pipe (kihúzható. Kivonat({ pálya: kimeneti út }))
.ígéret()
}

A kivonatZip A függvény egy aszinkron függvény, amely olvasási adatfolyamot hoz létre a ZIP fájl tartalmának olvasásához, és kibontja a fájlt a megadott kimeneti útvonalra (hozza létre a kinyerjük mappa, ha nem létezik).

Kicsomagolás vagy kicsomagolás esetén nincs szükség a fájlok és mappák különböző funkcióinak meghatározására, mivel a ZIP archívum egy fájl, függetlenül a benne lévő tartalomtól.

Az alábbiakban található egy funkció, amelyet hozzáadhat az alkalmazáshoz, amellyel tesztelheti az eddig létrehozott funkciókat:

(asyncfunkció () {
const fájl = "teszt.pdf"
const mappa = "teszt_mappa"
const zipFile = "test.pdf.zip"
createZipFromFile (fájl)
konzol.log("ZIP archívum sikeresen létrehozva a fájlból")
CreateZipFromFolder (mappa)
konzol.log("ZIP archívum sikeresen létrehozva a mappából")
várja ExtractZip (zipFile)
konzol.log("A ZIP-archívum sikeresen kicsomagolva")
}) ()

Az összes előző funkció JavaScript nyíl függvények, de a fenti függvény más, mert egy Azonnal meghívott függvénykifejezés hogy magába foglalja a kódot azon belül és azonnal végrehajtja.

A fájltömörítés előnyös a hatékony alkalmazások létrehozásában

Mindig célnak kell lennie, hogy alkalmazásai a lehető leghatékonyabbak legyenek a felhasználók jobb kiszolgálása és az élvezetes felhasználói élmény fenntartása érdekében.

Azokban a helyzetekben, amikor sok fájlt kell átvinnie az alkalmazáson belül, fontolja meg a fájlok tömörítését és kicsomagolását átvitel közben. A legtöbb modern programozási nyelv támogatja a fájlok hatékony tömörítését és kicsomagolását.