Farih.co.id
Home Programming Cara Kompres dan Dekompresi File di Node.js

Cara Kompres dan Dekompresi File di Node.js

node js filesystem tutorial cover

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 paling populer yang digunakan dalam dunia komputasi, dan merupakan pilihan yang sangat disarankan bagi siapa saja yang perlu mengonversi file mentah menjadi arsip untuk penyimpanan yang lebih baik, transfer yang efisien, atau alasan lainnya.

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 terlalu besar untuk disimpan di drive penyimpanan dengan kapasitas tertentu, atau terlalu lama untuk diunggah ke penyimpanan cloud .

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 bahasa lainnya, 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 archiver = require('archiver')
const fs = require('fs')


const createZipFromFile = (file) => {
    const filePath = __dirname + "https://www.makeuseof.com/" + file
    const output = fs.createWriteStream(filePath + '.zip')
    const archive = archiver('zip', {
        zlib: { level: 9 }
    })

    archive.pipe(output);
    archive.file(filePath, { name: file })
    archive.finalize()
}

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 pembuatan 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.

 
const createZipFromFolder = (folder) => {
    const folderPath = __dirname + "https://www.makeuseof.com/" + folder
    const output = fs.createWriteStream(folderPath + '.zip')

    const archive = archiver('zip', {
        zlib: { level: 9 }
    })

    archive.pipe(output)
    archive.directory(folderPath, false)
    archive.finalize()
}

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 BENARPengarsip 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 PALSUjika 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 install unzipper --save

Setelah menginstal paket, impor ke kode Anda dan implementasikan fungsi ekstraksi ZIP yang ditunjukkan pada kode di bawah ini:

 const unzipper = require("unzipper")


const extractZip = async (file) => {
    const filePath = __dirname + "https://www.makeuseof.com/" + file
    const outputPath = __dirname + '/extracted'
    await fs.createReadStream(filePath)
        .pipe(unzipper.Extract({ path: outputPath }))
        .promise()
}

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:

 (async function () {
    const file = 'test.pdf'
    const folder = 'test_folder'
    const zipFile = 'test.pdf.zip'
    createZipFromFile(file)
    console.log('ZIP archive successfully created from file')
    createZipFromFolder(folder)
    console.log('ZIP archive successfully created from folder')
    await extractZip(zipFile)
    console.log('ZIP archive extracted successfully')
}) ()

Semua fungsi sebelumnya adalah fungsi panah JavaScript, tetapi fungsi di atas berbeda karena merupakan Ekspresi Fungsi yang Segera Dipanggil yang 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.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad