Node.js: scaricare e decomprimere un file ZIP

Node.js: scaricare e decomprimere un file ZIP

Scaricare un file tramite HTTP e decomprimerlo è un'operazione comune nella programmazione con Node.js. In questo articolo, ti guideremo attraverso i passaggi necessari per scaricare un file ZIP tramite HTTP e decomprimerlo utilizzando Node.js.

Il primo passo è scaricare il file tramite HTTP. Per farlo, useremo il modulo https di Node.js. Utilizzeremo il metodo get() di questo modulo per ottenere il file dal server.


'use strict';

const https = require('https');
const fs = require('fs');

const fileUrl = 'https://example.com/myfile.zip';
const fileName = 'myfile.zip';

const file = fs.createWriteStream(fileName);

https.get(fileUrl, response => {
  response.pipe(file);

  file.on('finish', () => {
    file.close();
  });
}).on('error', error => {
  fs.unlink(fileName);
});

In questo esempio, stiamo scaricando il file ZIP dall'URL https://example.com/myfile.zip e salvando il file come myfile.zip. Il metodo get() richiama una funzione di callback con la risposta del server, che viene poi inviata al metodo pipe() per la scrittura del file. Quando il file è stato completamente scritto, l'evento finish viene invocato.

Dopo aver scaricato il file, possiamo decomprimerlo utilizzando il modulo adm-zip. Questo modulo offre una semplice interfaccia per la manipolazione dei file ZIP in Node.js.


const AdmZip = require('adm-zip');

const zip = new AdmZip('myfile.zip');
zip.extractAllTo('./extractdir', true);

In questo esempio, stiamo utilizzando il modulo adm-zip per creare un'istanza della classe AdmZip e decomprimere il file ZIP. Il metodo extractAllTo() accetta come primo parametro il percorso di destinazione dove verranno estratti i file, mentre il secondo parametro indica se i file esistenti devono essere sovrascritti.

In conclusione, scaricare un file via HTTP e decomprimerlo con Node.js è un'operazione relativamente semplice. Utilizzando i moduli https e adm-zip, possiamo scaricare e decomprimere i file in poche righe di codice.

Torna su