Käytä Archiver- ja Unzipper-paketteja tiedostojen pakkaamiseen ja purkamiseen Node.js: ssä.

Tiedostojen arkistointi on jokapäiväistä toimintaa nykymaailmassa, sillä jokainen voi todistaa tiedostojen tai kansioiden pakkaamisen pienemmiksi kannettaviin muotoihin tarjoamat edut.

ZIP-muoto on yksi suosituimmista tietojenkäsittelyn maailmassa käytetyistä arkistomuodoista, ja se on erittäin suositeltavaa valinta kaikille, joiden on muutettava raakatiedostot arkistoihin paremman säilytyksen, tehokkaan siirron tai minkä tahansa muun vuoksi syy.

Joten miksi sinun pitäisi harkita tiedostojen pakkaamista ja kuinka voit pakata tiedostoja ZIP-muotoon ja purkaa ne takaisin alkuperäiseen tilaan ohjelmallisesti Node.js: n avulla?

Miksi tiedostot pakataan?

Usein tiedostoista ja kansioista tulee erittäin suuria, ja niiden jakamisesta tai siirtämisestä tulee ongelma, koska ne ovat joko liian suuria tallennettavaksi tietyn kapasiteetin omaavalle tallennusasemalle, tai niiden lataaminen pilveen kestää liian kauan varastointi.

instagram viewer

Tällaisissa ja monissa muissa tilanteissa sinun tulee pakata tällaiset tiedostot tai kansiot paljon pienempään kokoon. Helpomman tiedostonsiirron lisäksi muita syitä, miksi sinun kannattaa harkita tiedostojen pakkaamista, ovat:

  • Tehokas säilytystila
  • Parempi tiedostorakenne ja organisaatio
  • Suojaus (tiedostojen salaus ja salasanasuojaus)
  • Tiedoston eheys
  • Tiedostojen versiointi

Mitä ovat Node.js-arkistointi- ja purkauspaketit?

The Arkistointi paketin virallisessa dokumentaatiossa paketti kuvataan "suoratoistorajapinnaksi arkiston luomiseen". Tämä tarkoittaa, että Archiver-paketti tarjoaa kirjaston toimintoja, jotka hyödyntävät Node.js-virtoja pakattujen tiedostoarkistojen luomiseen.

Arkistointipaketti tukee oletuksena useita arkistomuotoja, mukaan lukien ZIP, GZIP ja TAR. Paketin avulla voit myös luoda arkistoja tiedostoista ja hakemistoista ja jakaa suuret arkistot pienempiin osiin (moniosaiset arkistot). Sen avulla voit myös sulkea pois tai suodattaa tiedostoja pakkaamisen aikana.

The Avaa vetoketju paketti on erittäin tehokas paketti ZIP-arkistojen purkamiseen Node.js: ssä. Paketissa on helppokäyttöinen API, jonka avulla kehittäjät voivat purkaa ZIP-tiedostoja vain muutamalla koodirivillä.

Archiver- ja Unzipper-paketit ovat tämän opetusohjelman valintoja, koska ne integroituvat saumattomasti Node.js: n kanssa fs moduuli, mikä varmistaa sujuvan yhteensopivuuden ja yksinkertaisuuden.

Tiedostojen pakkaaminen ZIP-muotoon Node.js: ssa

Tiedostojen pakkaaminen ZIP-muotoon siirtäminen Node.js: ssa on helppoa, kuten millä tahansa muulla kielellä, Archiver-paketin ansiosta. Jotta voit luoda ZIP-arkistoja Node.js: ssa ja seurata tämän osion ohjeita, sinun on asennettava tietokoneellesi Node.js-kehitysympäristö.

Luot yksinkertaisen Node.js-skriptin tiedoston ja kansion pakkaamiseksi ZIP-muotoon. Luo uusi Node-projekti tietokoneellesi suorittamalla seuraavat komennot:

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

Seuraavaksi sinun on asennettava Archiver-paketti projektiisi. Juosta npm asennus arkistointi --tallenna terminaalissasi asentaaksesi sen. Kun paketin asennus on valmis, luo uusi tiedosto projektihakemistoon ja nimeä se haluamallasi tavalla, esim. app.js tai archiver.js.

The fs moduuli hoitaa tiedostotoiminnot, kun taas Archiver-paketti käsittelee tiedostojen ja kansioiden pakkaamisen ZIP-arkistoon, joten komentosarja vaatii molemmat moduulit.

ZIP-arkistojen luominen tiedostoista

Seuraava koodi on funktion toteutus, joka hyväksyy tiedoston argumenttina ja luo tiedostosta pakatun ZIP-version.

konst arkistaattori = vaatia("arkistointi")
konst fs = vaatia('fs')

// luo ZIP tiedostosta
konst createZipFromFile = (tiedosto) => {
konst filePath = __dirname + '/' + tiedosto
konst output = fs.createWriteStream (filePath + '.postinumero')
konst arkisto = arkistointi'postinumero', {
zlib: { taso: 9 } // aseta pakkaustaso korkeimmalle
})

archive.pipe (lähtö);
arkisto.tiedosto (filePath, { nimi: tiedosto })
archive.finalize()
}

Toiminto ottaa pakattavan tiedoston tiedostonimen ja luo samannimisen tulostiedoston (ainoa ero on ZIP-tiedostotunnisteen lisääminen).

Sitten toiminto luo uuden arkiston, jonka pakkaustaso on 9 (korkein) ja käyttää putki toiminto siirtää arkiston lähtövirrat tulostiedoston tuloon.

The tiedosto toiminto lisää tiedoston arkistoon. Se hyväksyy tiedostopolun parametrina ja valinnaisena vaihtoehtoja parametri, jossa voit määrittää arkistossa olevan tiedoston ominaisuudet.

The nimi vaihtoehto määrittää arkistossa olevan tiedoston nimen. Jos vaihtoehtoa ei ole määritetty lisättäessä tiedostoa arkistoon, Archiver sijoittaa tiedoston arkistoon sen alkuperäisen polun perusteella säilyttäen hakemistorakenteen.

Kuitenkin, kun se on nimenomaisesti säädetty, Archiver lisää tiedoston arkistoon ilman sen alkuperäistä polkua, mikä mahdollistaa mukautetun nimeämisen ja järjestämisen arkiston sisällä.

ZIP-arkistojen luominen kansioista

ZIP-arkistojen luominen kansioista ei ole kovin erilainen kuin tiedostojen luontiprosessi. Suurin ero on Archiver-paketin käyttö hakemistosta toiminto toisin kuin tiedosto edellisessä toiminnossa.

Alla on toiminnon toteutus kansion pakkaamiseksi ZIP-arkistoon.

// luo ZIP kansiosta
konst createZipFromFolder = (kansio) => {
konst folderPath = __dirname + '/' + kansio
konst output = fs.createWriteStream (folderPath + '.postinumero')

konst arkisto = arkistointi'postinumero', {
zlib: { taso: 9 } // aseta pakkaustaso korkeimmalle
})

archive.pipe (lähtö)
archive.directory (folderPath, väärä)
archive.finalize()
}

The hakemistosta funktio ottaa kansion polun ensimmäiseksi argumentiksi ja lipun toiseksi argumentiksi. Lippu määrittää kansion sijainnin arkistossa.

Kun lippu on asetettu väärä, tuloksena oleva arkisto sisältää vain kansion sisällön, pois lukien itse kansio. Mutta jos lippu on asetettu totta, Archiver sisällyttää itse kansion luotuun arkistoon

Jos haluat välttää arkiston purkamispaikan saastuttamisen pakatun arkiston tiedostoilla, sinun kannattaa harkita lippu vaihtoehto totta. Voit kuitenkin asettaa sen väärä, jos se sopii paremmin tarkoituksiin.

Tiedostojen purkaminen Node.js: ssä

ZIP-tiedostojen purkamisessa Node.js: ssä on useita lähestymistapoja ja useita kirjastoja on käytettävissä, mutta tässä artikkelissa käytetään Unzipper-pakettia.

Suorita seuraava komento päätteessäsi asentaaksesi Unzipper-paketin projektiisi.

npm asenna unzipper --tallenna

Kun olet asentanut paketin, tuo se koodiisi ja ota käyttöön alla olevassa koodissa näkyvä ZIP-purkutoiminto:

konst vetoketju auki = vaatia("avaa vetoketju")

//toiminto ZIP-tiedoston purkamiseksi
konst extractZip = asynk (tiedosto) => {
konst filePath = __dirname + '/' + tiedosto
konst outputPath = __dirname + '/purettu'
odottaa fs.createReadStream (filePath)
.pipe (avaa vetoketju. Ottaa talteen({ polku: outputPath }))
.lupaus()
}

The ekstraktiZip -toiminto on asynkroninen toiminto, joka luo lukuvirran ZIP-tiedoston sisällön lukemiseksi ja purkaa tiedoston määritettyyn lähtöpolkuun (se luo uutettu kansio, jos sitä ei ole olemassa).

Pakkauksen purkamisen tai purkamisen tapauksessa tiedostoille ja kansioille ei tarvitse määrittää eri toimintoja, koska ZIP-arkisto on tiedosto riippumatta sen sisällöstä.

Alla on toiminto, jonka voit lisätä sovellukseen testataksesi tähän mennessä luomiasi toimintoja:

(asynktoiminto () {
konst tiedosto = "testi.pdf"
konst kansio = 'test_folder'
konst zipFile = "test.pdf.zip"
createZipFromFile (tiedosto)
konsoli.Hirsi("ZIP-arkisto luotu onnistuneesti tiedostosta")
createZipFromFolder (kansio)
konsoli.Hirsi("ZIP-arkisto luotu onnistuneesti kansiosta")
odottaa extractZip (zipFile)
konsoli.Hirsi("ZIP-arkisto purettu onnistuneesti")
}) ()

Kaikki edelliset toiminnot ovat JavaScript-nuolitoiminnot, mutta yllä oleva funktio on erilainen, koska se on Välittömästi kutsuttu funktiolauseke että kapseloi koodin sen sisällä ja suorittaa sen välittömästi.

Tiedostojen pakkaus on hyödyllinen tehokkaiden sovellusten rakentamisessa

Tavoitteena tulee aina olla tehdä sovelluksistasi mahdollisimman tehokkaita, jotta voit palvella käyttäjiä paremmin ja ylläpitää nautinnollista käyttökokemusta.

Skenaarioissa, joissa sinun on siirrettävä paljon tiedostoja sovelluksessasi, harkitse tiedostojen pakkaamista ja purkamista lähetyksen aikana. Useimmat nykyaikaiset ohjelmointikielet tarjoavat tukea tiedostojen tehokkaaseen pakkaamiseen ja purkamiseen.