Kasutage Node.js-is failide tihendamiseks ja lahtipakkimiseks pakette Archiver ja Unzipper.

Failide arhiveerimine on tänapäeva maailmas igapäevane tegevus, kuna igaüks võib tunnistada eeliseid, mida pakub failide või kaustade tihendamine väiksematesse kaasaskantavatesse vormingutesse.

ZIP-vorming on üks populaarsemaid arhiivivorminguid, mida arvutimaailmas kasutatakse ja see on väga soovitatav valik kõigile, kes peavad toorfailid paremaks salvestamiseks, tõhusaks edastamiseks või muuks arhiivideks teisendama põhjus.

Miks peaksite kaaluma failide tihendamist ja kuidas saate faile ZIP-vormingusse tihendada ja programmiliselt Node.js-i abil algolekusse ekstraktida?

Miks faile tihendada?

Sageli muutuvad failid ja kaustad väga suureks ning nende jagamine või ülekandmine muutub probleemiks, kuna need on sellised kas liiga suured, et talletada teatud mahuga salvestuskettale, või võtab pilve üleslaadimine liiga kaua aega ladustamine.

Selliste ja paljude muude stsenaariumide korral peaksite sellised failid või kaustad palju väiksemaks tihendama. Lisaks lihtsamale failiedastusele on ka muud põhjused, miks võiksite kaaluda failide tihendamist:

instagram viewer

  • Tõhus ladustamine
  • Parem failistruktuur ja korraldus
  • Turvalisus (failide krüptimine ja paroolikaitse)
  • Faili terviklikkus
  • Faili versioonide loomine

Mis on Node.js arhiveerimis- ja lahtipakkimispaketid?

The Arhiveerija paketi ametlik dokumentatsioon kirjeldab paketti kui "voogesituse liidest arhiivi genereerimiseks". See tähendab, et pakett Archiver pakub funktsioonide teeki, mis kasutavad tihendatud failiarhiivide loomiseks Node.js-i vooge.

Pakett Archiver toetab vaikimisi mitut arhiivivormingut, sealhulgas ZIP, GZIP ja TAR. Samuti võimaldab pakett luua failidest ja kataloogidest arhiive ning jagada suured arhiivid väiksemateks osadeks (mitmeköitelised arhiivid). Samuti võimaldab see tihendamise ajal faile välistada või filtreerida.

The Tõmblukk lahti pakett on väga tõhus pakett ZIP-arhiivide ekstraktimiseks failist Node.js. Pakett pakub lihtsalt kasutatavat API-d, mis võimaldab arendajatel ZIP-faile välja võtta vaid mõne koodirea abil.

Selle õpetuse jaoks sobivad paketid Archiver ja Unzipper, kuna need integreeruvad sujuvalt Node.js-iga fs moodul, tagades sujuva ühilduvuse ja lihtsuse.

Kuidas failid Node.js-is ZIP-vormingusse tihendada

Failide tihendamine ZIP-vormingus kasutamine Node.js-is on tänu paketile Archiver lihtne nagu igas teises keeles. ZIP-arhiivide loomiseks rakenduses Node.js, järgides selle jaotise juhiseid, peate oma arvutis seadistama Node.js-i arenduskeskkonna.

Faili ja kausta ZIP-vormingusse tihendamiseks loote lihtsa Node.js-skripti. Looge oma arvutis uus Node projekt, käivitades järgmised käsud:

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

Järgmiseks peate oma projekti installima paketi Archiver. Jookse npm installi arhiveerija -- salvesta oma terminalis selle installimiseks. Kui paketi installimine on lõppenud, loo projekti kataloogis uus fail ja nimeta see vastavalt oma eelistustele, nt. app.js või arhiveerija.js.

The fs moodul tegeleb failitoimingutega, samas kui pakett Archiver tegeleb failide ja kaustade pakkimisega ZIP-arhiividesse, seega vajab skript mõlemat moodulit.

ZIP-arhiivide loomine failidest

Järgmine kood on funktsiooni rakendamine, mis aktsepteerib faili argumendina ja loob failist tihendatud ZIP-versiooni.

konst arhiveerija = nõuda("arhiivija")
konst fs = nõuda('fs')

// loo failist ZIP
konst createZipFromFile = (faili) => {
konst filePath = __dirname + '/' + fail
konst väljund = fs.createWriteStream (filePath + ".zip")
konst arhiiv = arhiveerija ('tõmblukk', {
zlib: { tasemel: 9 } // määrake tihendustaseme kõrgeimaks
})

arhiiv.toru (väljund);
arhiiv.fail (filePath, { nimi: fail })
arhiiv.finalize()
}

Funktsioon võtab tihendatava faili nime ja genereerib sarnase nimega väljundfaili (ainsaks erinevuseks on ZIP-faili laiendi lisamine).

Seejärel loob funktsioon uue arhiivi tihendustasemega 9 (kõrgeim) ja kasutab toru funktsioon arhiivi väljundvoogude ülekandmiseks väljundfaili sisendisse.

The faili funktsioon lisab faili arhiivi. See aktsepteerib failitee parameetrina ja valikulisena valikuid parameeter, kus saate määrata arhiivis oleva faili atribuudid.

The nimi valik määrab arhiivis oleva faili nime. Kui faili arhiivi lisamisel seda valikut ei täpsustata, paigutab Archiver faili arhiivi algse tee alusel, säilitades kataloogistruktuuri.

Kui see aga on selgesõnaliselt ette nähtud, lisab Archiver faili arhiivi ilma selle algse teeta, võimaldades kohandatud nimede andmist ja arhiivis korraldamist.

ZIP-arhiivide loomine kaustadest

Kaustadest ZIP-arhiivide loomise protsess ei erine eriti failide omast. Peamine erinevus on Archiveri paketi kasutamine kataloog funktsioon erinevalt faili eelmises funktsioonis.

Allpool on toodud kausta ZIP-arhiivi tihendamise funktsiooni rakendamine.

// looge kaustast ZIP
konst createZipFromFolder = (kausta) => {
konst folderPath = __dirname + '/' + kaust
konst väljund = fs.createWriteStream (folderPath + ".zip")

konst arhiiv = arhiveerija ('tõmblukk', {
zlib: { tasemel: 9 } // määrake tihendustaseme kõrgeimaks
})

archive.pipe (väljund)
archive.directory (folderPath, vale)
arhiiv.finalize()
}

The kataloog funktsioon võtab esimese argumendina kausta tee ja teise argumendina lipu. Lipp määrab kausta paigutuse arhiivis.

Kui lipp on seatud vale, sisaldab tekkiv arhiiv ainult kausta sisu, välja arvatud kaust ise. Aga kui lipp on seatud tõsi, Arhiveerija kaasab kausta enda loodud arhiivi

Kui soovite vältida arhiivi ekstraktimise asukoha saastamist tihendatud arhiivi failidega, peaksite mõtlema lipp võimalus tõsi. Siiski võite selle seadistada vale, kui see sobib paremini teie eesmärkidega.

Kuidas failid Node.js-is lahti pakkida

ZIP-failide ekstraktimisel Node.js-s on mitu lähenemisviisi ja kasutamiseks on saadaval mitu teeki, kuid selles artiklis kasutatakse Unzipperi paketti.

Käivitage oma terminalis järgmine käsk, et installida projekti Unzipperi pakett.

npm install unzipper --save

Pärast paketi installimist importige see oma koodi ja rakendage allolevas koodis näidatud ZIP-i ekstraktimise funktsioon:

konst tõmblukk lahti = nõuda("tõmblukk lahti")

// funktsioon ZIP-faili ekstraktimiseks
konst ekstraktZip = asünkr (fail) => {
konst filePath = __dirname + '/' + fail
konst outputPath = __katalooginimi + '/väljatõmmatud'
ootama fs.createReadStream (filePath)
.pipe (tõmblukk lahti. Extract({ tee: outputPath }))
.promise()
}

The ekstraktZip funktsioon on asünkroonne funktsioon, mis loob lugemisvoo ZIP-faili sisu lugemiseks ja ekstraktib faili määratud väljundteele (see loob ekstraheeritud kaust, kui seda pole olemas).

Lahtipakkimise või ekstraheerimise korral ei ole vaja failidele ja kaustadele erinevaid funktsioone määratleda, kuna ZIP-arhiiv on fail, olenemata selle sisust.

Allpool on funktsioon, mille saate rakendusele lisada, et testida seni loodud funktsioone.

(asünkrfunktsiooni () {
konst fail = "test.pdf"
konst kaust = 'test_kaust'
konst zipFile = "test.pdf.zip"
createZipFromFile (fail)
konsool.log("ZIP-arhiiv failist edukalt loodud")
createZipFromFolder (kaust)
konsool.log('ZIP-arhiiv edukalt loodud kaustast')
ootama extractZip (zipFile)
konsool.log("ZIP-arhiivi ekstraktimine õnnestus")
}) ()

Kõik eelnevad funktsioonid on JavaScripti noolefunktsioonid, kuid ülaltoodud funktsioon on erinev, kuna see on Kohe kutsutud funktsiooniavaldis et kapseldab koodi selle sees ja täidab selle kohe.

Failide tihendamine on tõhusate rakenduste loomisel kasulik

Alati peaks olema eesmärk muuta oma rakendused võimalikult tõhusaks, et kasutajaid paremini teenindada ja nauditavat kasutuskogemust säilitada.

Stsenaariumide korral, kus peate oma rakenduses palju faile üle kandma, kaaluge failide tihendamist ja lahtipakkimist edastamise ajal. Enamik kaasaegseid programmeerimiskeeli pakuvad tuge failide tõhusaks tihendamiseks ja lahtipakkimiseks.