Open In App

How to convert a file to zip file and download it using Node.js ?

Improve
Improve
Like Article
Like
Save
Share
Report

The Zip files are a common way of storing compressed files and folders. In this article, I’ll demonstrate how to convert the file to zip format by using the adm-zip module (NPM PACKAGE).

Uses of ADM-ZIP

  • compress the original file and change them to zip format.
  • update/delete the existing files(.zip format).

Installation of ADM-ZIP:

Step 1: Install the module using the below command in the terminal. 

npm install adm-zip

Step 2: Check the version of the installed module by using the below command

npm version adm-zip

Project Structure:

final project

We are going to change this upload_data folder to a zip file using the adm-zip module!

upload_data FOLDER

Code for conversion and downloading zip file:

Javascript




// express is a node framework that is helps in creating
// 2 or more web-pages application
const express = require('express')
 
// filesystem is a node module that allows us to work with
// the files that are stored on our pc
const file_system = require('fs')
 
// it is an npm package.this is to be required in our JS
// file for the conversion of data to a zip file!
const admz = require('adm-zip')
 
// stores the express module into the app variable!
const app = express()
 
// this is the name of specific folder which is to be
// changed into zip file1
var to_zip = file_system.readdirSync(__dirname + '/' + 'upload_data')
 
// this is used to request the specific file and then print
// the data in it!
app.get('/', function (req, res) {
    res.sendFile(__dirname + '/' + 'index.html')
 
 
    // zp is created as an object of class admz() which
    // contains functionalities
    const zp = new admz();
 
 
    // this is the main part of our work!
    // here for loop check counts and passes each and every
    // file of our folder "upload_data"
    // and convert each of them to a zip!
    for (let k = 0; k < to_zip.length; k++) {
        zp.addLocalFile(__dirname + '/' + 'upload_data' + '/' + to_zip[k])
    }
 
 
    // here we assigned the name to our downloaded file!
    const file_after_download = 'downloaded_file.zip';
 
    // toBuffer() is used to read the data and save it
    // for downloading process!
    const data = zp.toBuffer();
 
 
    // this is the code for downloading!
    // here we have to specify 3 things:
    // 1. type of content that we are downloading
    // 2. name of file to be downloaded
    // 3. length or size of the downloaded file!
 
    res.set('Content-Type', 'application/octet-stream');
    res.set('Content-Disposition', `attachment; filename=${file_after_download}`);
    res.set('Content-Length', data.length);
    res.send(data);
 
})
 
// this is used to listen a specific port!
app.listen(7777, function () {
    console.log('port is active at 7777');
})


Steps to run the program:

Open the terminal at the desired local and make sure that u have downloaded the adm-zip package using the following command. 

npm install adm-zip

Run the app.js file using the following command.

node app.js

app is running

Open the browser and open localhost:7777 and then the upload_data folder gets converted to a zip file and gets downloaded!

changed to zip file

Output: Representing the whole procedure for converting files to zip files with the help of the following gif, so in this way, you can change your folder to a zip file and then download it!

file to zip file



Last Updated : 06 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads