Manfaatkan paket Archiver dan Unzipper untuk mengompres dan mendekompres file di Node.js.
Pengarsipan file adalah aktivitas sehari-hari di dunia modern karena setiap orang dapat membuktikan keuntungan yang ditawarkan dengan mengompresi file atau folder menjadi format portabel yang lebih kecil.
Format ZIP adalah salah satu format arsip terpopuler yang digunakan dalam dunia komputasi, dan sangat direkomendasikan pilihan bagi siapa saja yang perlu mengonversi file mentah menjadi arsip untuk penyimpanan yang lebih baik, transfer yang efisien, atau lainnya alasan.
Jadi, mengapa Anda harus mempertimbangkan mengompres file Anda, dan bagaimana Anda mengompres file ke ZIP dan mengekstraknya kembali ke keadaan semula secara terprogram menggunakan Node.js?
Mengapa Kompres File?
Sering kali, file dan folder menjadi sangat besar, dan berbagi atau mentransfernya menjadi masalah karena memang demikian terlalu besar untuk disimpan di drive penyimpanan dengan kapasitas tertentu, atau terlalu lama untuk diunggah ke cloud penyimpanan.
Dalam skenario seperti ini dan banyak lagi, Anda harus mengompres file atau folder tersebut menjadi ukuran yang jauh lebih kecil. Terlepas dari transfer file yang lebih mudah, alasan lain mengapa Anda mungkin mempertimbangkan untuk mengompresi file Anda meliputi:
- Penyimpanan yang efisien
- Struktur dan organisasi file yang lebih baik
- Keamanan (enkripsi file dan perlindungan kata sandi)
- Integritas file
- Versi file
Apa itu Paket Pengarsipan dan Unzipper Node.js?
Itu Pengarsip dokumentasi resmi paket menggambarkan paket tersebut sebagai "antarmuka streaming untuk pembuatan arsip". Ini menyiratkan bahwa paket Archiver menyediakan pustaka fungsi yang memanfaatkan aliran Node.js untuk membuat arsip file terkompresi.
Paket Archiver mendukung berbagai format arsip secara default, termasuk ZIP, GZIP, dan TAR. Paket ini juga memungkinkan Anda membuat arsip dari file dan direktori, dan membagi arsip besar menjadi bagian yang lebih kecil (arsip multivolume). Ini juga memungkinkan Anda untuk mengecualikan atau memfilter file selama kompresi.
Itu Buka ritsleting package adalah paket yang sangat efisien untuk mengekstrak arsip ZIP di Node.js. Paket ini menyediakan API yang mudah digunakan yang memungkinkan pengembang mengekstrak file ZIP hanya dengan beberapa baris kode.
Paket Archiver dan Unzipper adalah pilihan untuk tutorial ini karena mereka berintegrasi mulus dengan Node.js fs modul, memastikan kelancaran kompatibilitas dan kesederhanaan.
Cara Mengompres File ke Format ZIP di Node.js
Mengompresi file ke format ZIP di Node.js mudah seperti di bahasa lain, berkat paket Archiver. Untuk membuat arsip ZIP di Node.js sambil mengikuti bagian ini, Anda perlu menyiapkan lingkungan pengembangan Node.js di komputer Anda.
Anda akan membuat skrip Node.js sederhana untuk mengompres file dan folder ke format ZIP. Buat proyek Node baru di komputer Anda dengan menjalankan perintah berikut:
mkdir node-zip-archiver
CD node-zip-archiver
npm init -y
Selanjutnya, Anda perlu menginstal paket Archiver di proyek Anda. Berlari npm instal pengarsipan --save di terminal Anda untuk menginstalnya. Saat penginstalan paket selesai, buat file baru di direktori proyek dan beri nama sesuai keinginan Anda, mis. aplikasi.js atau pengarsipan.js.
Itu fs modul menangani operasi file, sedangkan paket Archiver akan menangani kompresi file dan folder menjadi arsip ZIP, oleh karena itu, skrip memerlukan kedua modul tersebut.
Membuat Arsip ZIP Dari File
Kode berikut adalah implementasi dari fungsi yang menerima file sebagai argumen dan membuat versi file ZIP terkompresi.
const pengarsip = memerlukan('pengarsip')
const fs = memerlukan('fs')// buat ZIP dari file
const buatZipFromFile = (mengajukan) => {
const filePath = __dirname + '/' + berkas
const keluaran = fs.createWriteStream (filePath + '.ritsleting')
const arsip = pengarsip('ritsleting', {
zlib: { tingkat: 9 } // atur level kompresi ke yang tertinggi
})
arsip.pipe (keluaran);
arsip.file (filePath, { nama: berkas })
arsip.menyelesaikan()
}
Fungsi mengambil nama file dari file untuk dikompresi dan menghasilkan file keluaran dengan nama yang mirip (dengan satu-satunya perbedaan adalah penambahan ekstensi file ZIP).
Kemudian, fungsi menghasilkan arsip baru dengan tingkat kompresi yang disetel ke 9 (tertinggi) dan memanfaatkan pipa berfungsi untuk mentransfer aliran keluaran arsip ke input file keluaran.
Itu mengajukan fungsi menambahkan file ke arsip. Itu menerima jalur file sebagai parameter dan opsional pilihan parameter tempat Anda dapat menentukan properti file di arsip.
Itu nama pilihan menunjuk nama file dalam arsip. Jika opsi tidak ditentukan saat menambahkan file ke arsip, Archiver menempatkan file di dalam arsip berdasarkan jalur aslinya, mempertahankan struktur direktori.
Namun, ketika disediakan secara eksplisit, Archiver menambahkan file ke arsip tanpa jalur aslinya, memungkinkan penamaan dan pengaturan khusus di dalam arsip.
Membuat Arsip ZIP Dari Folder
Proses pembuatan arsip ZIP dari folder tidak jauh berbeda dengan yang untuk file. Perbedaan utama adalah penggunaan paket Archiver direktori berfungsi sebagai lawan mengajukan pada fungsi sebelumnya.
Di bawah ini adalah penerapan fungsi untuk mengompresi folder menjadi arsip ZIP.
// buat ZIP dari folder
const createZipFromFolder = (map) => {
const folderPath = __dirname + '/' + map
const keluaran = fs.createWriteStream (folderPath + '.ritsleting')const arsip = pengarsip('ritsleting', {
zlib: { tingkat: 9 } // atur level kompresi ke yang tertinggi
})
arsip.pipe (keluaran)
arsip.direktori (folderPath, PALSU)
arsip.menyelesaikan()
}
Itu direktori fungsi mengambil jalur folder sebagai argumen pertama dan bendera sebagai argumen kedua. Bendera menentukan penempatan folder di dalam arsip.
Ketika bendera diatur ke PALSU, arsip yang dihasilkan hanya akan berisi konten folder, tidak termasuk folder itu sendiri. Tetapi jika bendera diatur ke BENAR, Pengarsip akan memasukkan folder itu sendiri ke dalam arsip yang dihasilkan
Jika Anda ingin menghindari kontaminasi lokasi tempat Anda mengekstrak arsip dengan file dari arsip terkompresi, Anda harus memikirkan pengaturan bendera pilihan untuk BENAR. Namun, Anda dapat mengaturnya ke PALSU, jika lebih sesuai dengan tujuan Anda.
Cara Mendekompres File di Node.js
Proses mengekstrak file ZIP di Node.js memiliki banyak pendekatan dan beberapa pustaka tersedia untuk digunakan, tetapi dalam artikel ini, paket Unzipper digunakan.
Jalankan perintah berikut di terminal Anda untuk menginstal paket Unzipper di proyek Anda.
npm instal unzipper --save
Setelah menginstal paket, impor ke kode Anda dan implementasikan fungsi ekstraksi ZIP yang ditunjukkan pada kode di bawah ini:
const membuka ritsleting = memerlukan("buka ritsleting")
//fungsi untuk mengekstrak file ZIP
const ekstrakZip = asinkron (berkas) => {
const filePath = __dirname + '/' + berkas
const outputPath = __dirname + '/ diekstrak'
menunggu fs.createReadStream (filePath)
.pipe (unzip. Ekstrak({ jalur: jalur keluaran }))
.janji()
}
Itu extractZip function adalah fungsi asinkron yang membuat aliran baca untuk membaca konten file ZIP, dan mengekstrak file ke jalur keluaran yang ditentukan (itu membuat diekstrak folder jika tidak ada).
Dalam kasus dekompresi atau ekstraksi, tidak perlu mendefinisikan fungsi yang berbeda untuk file dan folder, karena arsip ZIP adalah file terlepas dari konten di dalamnya.
Di bawah ini adalah fungsi yang dapat Anda tambahkan ke aplikasi, untuk menguji fungsi yang telah Anda buat sejauh ini:
(asinkronfungsi () {
const berkas = 'tes.pdf'
const folder = 'test_folder'
const zipFile = 'test.pdf.zip'
buatZipFromFile (file)
menghibur.catatan('Arsip ZIP berhasil dibuat dari file')
createZipFromFolder (folder)
menghibur.catatan('Arsip ZIP berhasil dibuat dari folder')
menunggu ekstrakZip (zipFile)
menghibur.catatan('Arsip ZIP berhasil diekstrak')
}) ()
Semua fungsi sebelumnya adalah Fungsi panah JavaScript, tetapi fungsi di atas berbeda karena merupakan Ekspresi Fungsi yang Segera Dipanggil itu merangkum kode di dalamnya dan mengeksekusinya segera.
Kompresi File Bermanfaat dalam Membangun Aplikasi yang Efisien
Itu harus selalu menjadi tujuan untuk membuat aplikasi Anda seefisien mungkin untuk melayani pengguna dengan lebih baik dan mempertahankan pengalaman pengguna yang menyenangkan.
Dalam skenario di mana Anda perlu mentransfer banyak file dalam aplikasi Anda, pertimbangkan untuk mengompresi dan mendekompresi file saat mengirim. Sebagian besar bahasa pemrograman modern memberikan dukungan untuk mengompres dan mendekompresi file secara efisien.