Izmantojiet Archiver un Unzipper pakotnes, lai saspiestu un atspiestu failus node.js.

Failu arhivēšana ir ikdiena mūsdienu pasaulē, jo ikviens var apliecināt priekšrocības, ko sniedz failu vai mapju saspiešana mazākos, pārnēsājamos formātos.

ZIP formāts ir viens no populārākajiem arhīva formātiem, ko izmanto skaitļošanas pasaulē, un tas ir ļoti ieteicams izvēle ikvienam, kam nepieciešams konvertēt neapstrādātus failus arhīvos labākai uzglabāšanai, efektīvai pārsūtīšanai vai jebkuram citam iemesls.

Tātad, kāpēc jums vajadzētu apsvērt failu saspiešanu un kā jūs varat saspiest failus ZIP formātā un programmatiski izvilkt tos sākotnējā stāvoklī, izmantojot Node.js?

Kāpēc saspiest failus?

Bieži faili un mapes kļūst ļoti lieli, un to koplietošana vai pārsūtīšana kļūst par problēmu, jo tie ir vai nu pārāk lieli, lai tos uzglabātu noteiktas ietilpības atmiņas diskā, vai arī to augšupielāde mākonī aizņem pārāk ilgu laiku uzglabāšana.

Tādos scenārijos kā šis un daudzos citos jums vajadzētu saspiest šādus failus vai mapes daudz mazākā izmērā. Papildus vieglākai failu pārsūtīšanai ir arī citi iemesli, kāpēc jūs varētu apsvērt failu saspiešanu:

  • Efektīva uzglabāšana
  • Labāka failu struktūra un organizācija
  • Drošība (failu šifrēšana un paroles aizsardzība)
  • Faila integritāte
  • Failu versiju noteikšana

Kas ir Node.js arhivēšanas un atšifrētāja pakotnes?

The Arhivētājs pakotnes oficiālajā dokumentācijā pakotne ir aprakstīta kā "straumēšanas saskarne arhīvu ģenerēšanai". Tas nozīmē, ka pakete Archiver nodrošina funkciju bibliotēku, kas izmanto Node.js straumes, lai izveidotu saspiestu failu arhīvus.

Arhivēšanas pakotne pēc noklusējuma atbalsta vairākus arhīva formātus, tostarp ZIP, GZIP un TAR. Pakete ļauj arī izveidot arhīvus no failiem un direktorijiem, kā arī sadalīt lielus arhīvus mazākās daļās (vairāku sējumu arhīvi). Tas arī ļauj izslēgt vai filtrēt failus saspiešanas laikā.

The Attaisāms rāvējslēdzējs pakotne ir ļoti efektīva pakotne ZIP arhīvu izvilkšanai pakalpojumā Node.js. Pakete nodrošina viegli lietojamu API, kas ļauj izstrādātājiem izvilkt ZIP failus tikai ar dažām koda rindām.

Šīs apmācības izvēles iespējas ir arhivētājs un unzipper pakotnes, jo tās nemanāmi integrējas ar Node.js fs modulis, nodrošinot vienmērīgu saderību un vienkāršību.

Kā saspiest failus ZIP formātā pakalpojumā Node.js

Failu saspiešana ZIP formātā Node.js ir vienkārši tāpat kā jebkurā citā valodā, pateicoties paketei Archiver. Lai pakalpojumā Node.js izveidotu ZIP arhīvus, izpildot šīs sadaļas norādījumus, datorā ir jāiestata Node.js izstrādes vide.

Jūs izveidosit vienkāršu Node.js skriptu, lai saspiestu failu un mapi ZIP formātā. Izveidojiet jaunu Node projektu savā datorā, izpildot šādas komandas:

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

Pēc tam savā projektā jāinstalē pakete Archiver. Skrien npm instalēt arhivētāju -- saglabāt savā terminālī, lai to instalētu. Kad pakotnes instalēšana ir pabeigta, izveidojiet jaunu failu projekta direktorijā un nosauciet to atbilstoši savām vēlmēm, piemēram, app.js vai arhivētājs.js.

The fs modulis apstrādā failu darbības, savukārt arhivēšanas pakotne apstrādās failu un mapju saspiešanu ZIP arhīvos, tāpēc skriptam ir nepieciešami abi moduļi.

ZIP arhīvu izveide no failiem

Šis kods ir tādas funkcijas ieviešana, kas pieņem failu kā argumentu un izveido faila saspiestu ZIP versiju.

konst arhivētājs = pieprasīt("arhivētājs")
konst fs = pieprasīt("fs")

// izveidot ZIP no faila
konst CreateZipFromFile = (failu) => {
konst filePath = __dirname + '/' + fails
konst izvade = fs.createWriteStream (filePath + ".zip")
konst arhīvs = arhivētājs ("rāvējslēdzējs", {
zlib: { līmenī: 9 } // iestatiet saspiešanas līmeni uz augstāko
})

arhīvs.pipe (izeja);
arhīvs.fails (filePath, { nosaukums: fails })
archive.finalize()
}

Funkcija izmanto saspiestā faila faila nosaukumu un ģenerē izvades failu ar līdzīgu nosaukumu (vienīgā atšķirība ir ZIP faila paplašinājuma pievienošana).

Pēc tam funkcija ģenerē jaunu arhīvu ar saspiešanas līmeni, kas iestatīts uz 9 (augstākais) un izmanto caurule funkcija, lai pārsūtītu arhīva izvades plūsmas uz izvades faila ievadi.

The failu funkcija pievieno failu arhīvam. Tā pieņem faila ceļu kā parametru un neobligātu iespējas parametrs, kurā var norādīt arhīvā esošā faila rekvizītus.

The nosaukums opcija apzīmē faila nosaukumu arhīvā. Ja opcija nav norādīta, pievienojot failu arhīvam, arhivētājs ievieto failu arhīvā, pamatojoties uz tā sākotnējo ceļu, saglabājot direktoriju struktūru.

Tomēr, ja tas ir skaidri norādīts, arhivētājs pievieno failu arhīvam bez tā sākotnējā ceļa, ļaujot arhīvā piešķirt pielāgotus nosaukumus un sakārtot.

ZIP arhīvu izveide no mapēm

ZIP arhīvu izveides process no mapēm ļoti neatšķiras no procesa, kas paredzēts failiem. Galvenā atšķirība ir Archiver pakotnes izmantošana direktoriju funkcija pretstatā failu iepriekšējā funkcijā.

Tālāk ir norādīta funkcijas ieviešana, lai saspiestu mapi ZIP arhīvā.

// izveidot ZIP no mapes
konst CreateZipFromFolder = (mapi) => {
konst folderPath = __dirname + '/' + mape
konst izvade = fs.createWriteStream (folderPath + ".zip")

konst arhīvs = arhivētājs ("rāvējslēdzējs", {
zlib: { līmenī: 9 } // iestatiet saspiešanas līmeni uz augstāko
})

archive.pipe (izeja)
archive.directory (folderPath, viltus)
archive.finalize()
}

The direktoriju funkcija izmanto mapes ceļu kā savu pirmo argumentu un karogu kā otro argumentu. Karogs nosaka mapes izvietojumu arhīvā.

Kad karogs ir iestatīts uz viltus, iegūtajā arhīvā būs tikai mapes saturs, izņemot pašu mapi. Bet, ja karogs ir iestatīts uz taisnība, Arhivētājs ģenerētajā arhīvā iekļaus pašu mapi

Ja vēlaties izvairīties no arhīva izvilkšanas vietas piesārņošanas ar failiem no saspiestā arhīva, jums vajadzētu padomāt par karogs iespēja uz taisnība. Tomēr jūs varat to iestatīt uz viltus, ja tas labāk atbilst jūsu mērķiem.

Kā atspiest failus node.js

ZIP failu izvilkšanas procesam pakalpojumā Node.js ir vairākas pieejas, un lietošanai ir pieejamas vairākas bibliotēkas, taču šajā rakstā tiek izmantota pakotne Unzipper.

Palaidiet šo komandu terminālī, lai projektā instalētu pakotni Unzipper.

npm instalējiet unrāvējslēdzēju - saglabājiet

Pēc pakotnes instalēšanas importējiet to savā kodā un ieviesiet ZIP izvilkšanas funkciju, kas parādīta tālāk esošajā kodā:

konst attaisām rāvējslēdzēju = pieprasīt("atrāvējslēdzējs")

// funkcija ZIP faila izvilkšanai
konst ekstraktsZip = asinhrons (fails) => {
konst filePath = __dirname + '/' + fails
konst outputPath = __dirname + '/izvilkts'
gaidīt fs.createReadStream (filePath)
.pipe (atrāvējslēdzējs. Ekstrakts({ ceļš: izvades ceļš }))
.promise()
}

The ekstraktsZip funkcija ir asinhrona funkcija, kas izveido lasīšanas straumi, lai lasītu ZIP faila saturu, un izvelk failu uz norādīto izvades ceļu (tā izveido izvilkts mape, ja tā neeksistē).

Atspiešanas vai izvilkšanas gadījumā failiem un mapēm nav jādefinē dažādas funkcijas, jo ZIP arhīvs ir fails neatkarīgi no tā satura.

Tālāk ir norādīta funkcija, kuru varat pievienot lietojumprogrammai, lai pārbaudītu līdz šim izveidotās funkcijas:

(asinhronsfunkciju () {
konst fails = "test.pdf"
konst mape = 'test_folder'
konst zipFile = "test.pdf.zip"
createZipFromFile (fails)
konsole.log("ZIP arhīvs veiksmīgi izveidots no faila")
CreateZipFromFolder (mape)
konsole.log("ZIP arhīvs veiksmīgi izveidots no mapes")
gaidīt extractZip (zipFile)
konsole.log("ZIP arhīvs veiksmīgi izvilkts")
}) ()

Visas iepriekšējās funkcijas ir JavaScript bultiņas funkcijas, taču iepriekš minētā funkcija atšķiras, jo tā ir Nekavējoties izsauktās funkcijas izteiksme ka iekapsulē kodu tajā un izpilda to nekavējoties.

Failu saspiešana ir noderīga efektīvu lietojumprogrammu izveidē

Vienmēr ir jābūt mērķim padarīt lietojumprogrammas pēc iespējas efektīvākas, lai labāk apkalpotu lietotājus un uzturētu patīkamu lietošanas pieredzi.

Gadījumos, kad lietojumprogrammā ir jāpārsūta daudz failu, apsveriet iespēju pārsūtīšanas laikā saspiest un atspiest failus. Lielākā daļa mūsdienu programmēšanas valodu nodrošina efektīvu failu saspiešanu un atspiešanu.