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:
- 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.