Norėdami suspausti ir išskleisti failus Node.js, naudokite paketus Archiver ir Unzipper.

Failų archyvavimas yra kasdienė veikla šiuolaikiniame pasaulyje, nes kiekvienas gali patvirtinti failų ar aplankų glaudinimo į mažesnius, nešiojamus formatus pranašumus.

ZIP formatas yra vienas populiariausių archyvo formatų, naudojamų kompiuterijos pasaulyje, ir tai labai rekomenduojama pasirinkimas visiems, kuriems reikia konvertuoti neapdorotus failus į archyvus, kad juos būtų galima geriau saugoti, efektyviau perkelti ar bet ką kita priežastis.

Taigi, kodėl turėtumėte apsvarstyti galimybę suspausti failus ir kaip galite suspausti failus į ZIP ir išskleisti juos į pradinę būseną programiškai naudojant Node.js?

Kodėl reikia suspausti failus?

Daug kartų failai ir aplankai tampa labai dideli, o bendrinimas ar jų perkėlimas tampa problema, nes jie yra tokie arba per dideli, kad būtų galima laikyti tam tikros talpos atminties diske, arba per ilgai juos įkelti į debesį saugykla.

Tokiais atvejais kaip šis ir daugelis kitų, turėtumėte suspausti tokius failus ar aplankus į daug mažesnį dydį. Be lengvesnio failų perdavimo, kitos priežastys, kodėl turėtumėte apsvarstyti galimybę suspausti failus, yra šios:

instagram viewer

  • Efektyvus saugojimas
  • Geresnė failų struktūra ir organizavimas
  • Saugumas (failų šifravimas ir slaptažodžio apsauga)
  • Failo vientisumas
  • Failų versijų nustatymas

Kas yra Node.js archyvavimo ir išpakavimo paketai?

The Archyvuotojas oficialioje paketo dokumentacijoje paketas apibūdinamas kaip „srautinio perdavimo sąsaja archyvo generavimui“. Tai reiškia, kad archyvo pakete yra funkcijų biblioteka, kuri naudoja Node.js srautus kuriant suglaudintus failų archyvus.

Archyvo paketas pagal numatytuosius nustatymus palaiko kelis archyvo formatus, įskaitant ZIP, GZIP ir TAR. Paketas taip pat leidžia kurti archyvus iš failų ir katalogų, o didelius archyvus padalinti į mažesnes dalis (kelių tomų archyvai). Tai taip pat leidžia išskirti arba filtruoti failus glaudinant.

The Atsegtas užtrauktukas paketas yra labai efektyvus paketas ZIP archyvams iš Node.js. Paketas suteikia lengvai naudojamą API, leidžiančią kūrėjams išgauti ZIP failus tik keliomis kodo eilutėmis.

Archiver ir Unzipper paketai yra šios pamokos pasirinkimai, nes jie sklandžiai integruojami su Node.js fs modulis, užtikrinantis sklandų suderinamumą ir paprastumą.

Kaip suspausti failus į ZIP formatą Node.js

Failų suspaudimas ZIP formatu Node.js yra lengva, kaip ir bet kuria kita kalba, dėka archyvo paketo. Norėdami sukurti ZIP archyvus Node.js, vykdydami šį skyrių, kompiuteryje turite nustatyti Node.js kūrimo aplinką.

Norėdami suspausti failą ir aplanką į ZIP formatą, sukursite paprastą Node.js scenarijų. Sukurkite naują mazgo projektą savo kompiuteryje vykdydami šias komandas:

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

Tada savo projekte turite įdiegti archyvo paketą. Bėk npm įdiegti archyvatorių - išsaugoti savo terminale, kad jį įdiegtumėte. Kai paketo diegimas bus baigtas, sukurkite naują failą projekto kataloge ir pavadinkite jį pagal savo pageidavimus, pvz. app.js arba archyvatorius.js.

The fs modulis tvarko failų operacijas, o paketas Archiver – suglaudins failus ir aplankus į ZIP archyvus, todėl scenarijui reikalingi abu moduliai.

ZIP archyvų kūrimas iš failų

Šis kodas yra funkcijos, kuri priima failą kaip argumentą ir sukuria suglaudintą ZIP failo versiją, įgyvendinimas.

konst archyvatorius = reikalauti("archyvuotojas")
konst fs = reikalauti("fs")

// sukurti ZIP failą
konst CreateZipFromFile = (failą) => {
konst filePath = __dirname + '/' + failas
konst output = fs.createWriteStream (filePath + ".zip")
konst archyvas = archyvatorius ("užtrauktukas", {
zlib: { lygiu: 9 } // nustatykite aukščiausią glaudinimo lygį
})

archyvas.vamzdis (išvestis);
archyvas.failas (filePath, { vardas: failas })
archive.finalize()
}

Funkcija suglaudina failo pavadinimą ir sugeneruoja išvesties failą panašiu pavadinimu (vienintelis skirtumas yra ZIP failo plėtinio pridėjimas).

Tada funkcija sugeneruoja naują archyvą, kurio glaudinimo lygis nustatytas į 9 (aukščiausias) ir naudoja vamzdis funkcija perkelti archyvo išvesties srautus į išvesties failo įvestį.

The failą funkcija prideda failą į archyvą. Jis priima failo kelią kaip parametrą ir pasirenkamą galimybės parametras, kuriame galite nurodyti archyve esančio failo ypatybes.

The vardas parinktis nurodo failo pavadinimą archyve. Jei pridedant failą į archyvą parinktis nenurodyta, archyvavimo priemonė įkelia failą į archyvą pagal pradinį kelią, išsaugodama katalogo struktūrą.

Tačiau, kai tai yra aiškiai nurodyta, archyvatorius prideda failą į archyvą be jo pradinio kelio, todėl archyve galima priskirti tinkintus pavadinimus ir tvarkyti.

ZIP archyvų kūrimas iš aplankų

ZIP archyvų kūrimo iš aplankų procesas labai nesiskiria nuo failų. Pagrindinis skirtumas yra archyvo paketo naudojimas katalogas funkcija, priešingai failą ankstesnėje funkcijoje.

Žemiau pateikiamas aplanko suspaudimo į ZIP archyvą funkcijos įgyvendinimas.

// sukurti ZIP iš aplanko
konst CreateZipFromFolder = (aplanką) => {
konst folderPath = __dirname + '/' + aplankas
konst output = fs.createWriteStream (folderPath + ".zip")

konst archyvas = archyvatorius ("užtrauktukas", {
zlib: { lygiu: 9 } // nustatykite aukščiausią glaudinimo lygį
})

archive.pipe (išvestis)
archyvas.katalogas (folderPath, klaidinga)
archive.finalize()
}

The katalogas funkcija naudoja aplanko kelią kaip pirmąjį argumentą, o vėliavėlę - kaip antrą argumentą. Vėliava nustato aplanko vietą archyve.

Kai vėliava nustatyta į klaidinga, gautame archyve bus tik aplanko turinys, neįskaitant paties aplanko. Bet jei vėliava yra nustatyta tiesa, Archyvas įtrauks patį aplanką į sugeneruotą archyvą

Jei norite neužkrėsti vietos, kurioje ištraukiate archyvą, failais iš suglaudinto archyvo, turėtumėte pagalvoti apie vėliava galimybė į tiesa. Tačiau galite jį nustatyti klaidinga, jei tai geriau atitinka jūsų tikslus.

Kaip išspausti failus Node.js

ZIP failų išskleidimo Node.js procese yra keli būdai ir galima naudoti kelias bibliotekas, tačiau šiame straipsnyje naudojamas Unzipper paketas.

Paleiskite šią komandą savo terminale, kad įdiegtumėte Unzipper paketą savo projekte.

npm įdiegti unzipper --save

Įdiegę paketą, importuokite jį į savo kodą ir įdiekite ZIP ištraukimo funkciją, parodytą toliau pateiktame kode:

konst atsegti užtrauktuką = reikalauti("atsegimas")

// ZIP failo išskleidimo funkcija
konst ekstraktasZip = async (failas) => {
konst filePath = __dirname + '/' + failas
konst outputPath = __dirname + '/išskirta'
laukti fs.createReadStream (filePath)
.pipe (atsegtas užtrauktukas. Extract({ kelias: outputPath }))
.pažadas()
}

The ekstraktasZip funkcija yra asinchroninė funkcija, kuri sukuria skaitymo srautą ZIP failo turiniui nuskaityti ir ištraukia failą nurodytu išvesties keliu (sukuria išgauti aplanką, jei jo nėra).

Išskleidimo ar išskleidimo atveju nereikia apibrėžti skirtingų failų ir aplankų funkcijų, nes ZIP archyvas yra failas, neatsižvelgiant į jame esantį turinį.

Žemiau yra funkcija, kurią galite pridėti prie programos, kad išbandytumėte iki šiol sukurtas funkcijas:

(asyncfunkcija () {
konst failas = „testas.pdf“
konst aplankas = 'bandymo_aplankas'
konst zipFile = „test.pdf.zip“
CreateZipFromFile (failas)
konsolė.log(„ZIP archyvas sėkmingai sukurtas iš failo“)
CreateZipFromFolder (aplankas)
konsolė.log(„ZIP archyvas sėkmingai sukurtas iš aplanko“)
laukti ExtractZip (zipFile)
konsolė.log(„Sėkmingai ištrauktas ZIP archyvas“)
}) ()

Visos ankstesnės funkcijos yra JavaScript rodyklės funkcijos, tačiau aukščiau nurodyta funkcija skiriasi, nes ji yra Iškart iškviesta funkcijos išraiška kad apima kodą joje ir nedelsiant jį įvykdo.

Failų glaudinimas yra naudingas kuriant efektyvias programas

Visada turėtų būti siekiama, kad jūsų programos būtų kuo veiksmingesnės, kad naudotojai būtų geriau aptarnaujami ir kad naudotojų patirtis būtų maloni.

Tais atvejais, kai reikia perkelti daug failų per programą, apsvarstykite galimybę suglaudinti ir išskleisti failus siuntimo metu. Dauguma šiuolaikinių programavimo kalbų palaiko efektyvų failų suspaudimą ir išskleidimą.