Il download di file nell'archivio locale anziché tenerli nell'archivio cloud presenta diversi vantaggi. Questi includono un accesso più semplice, l'accesso senza una connessione Internet e la completa proprietà dei tuoi dati.
Puoi scaricare file singoli e multipli utilizzando i moduli Node.js integrati. Puoi anche utilizzare una libreria di terze parti per ottenere gli stessi risultati.
Download di file senza una libreria di terze parti
Per scaricare un file utilizzando Node.js, senza l'ausilio di pacchetti di terze parti, avrai bisogno di tre moduli Node.js principali: fs, https, E sentiero.
IL fs Il modulo supporta molte attività di file tra cui leggere, creare, aggiornare, rimuovere e rinominare. IL https Il modulo crea un server Web per gestire le richieste e fornire risposte. IL sentiero Il modulo fornisce un modo per interagire con directory e percorsi di file.
Utilizzando questi moduli, puoi inviare una richiesta HTTP GET per accedere a una risorsa file da un server Web e quindi creare una copia della risorsa nel tuo sistema locale.
Per iniziare, importa i moduli richiesti:
cost https = richiedere('https');
cost fs = richiedere('fs');
cost percorso = richiedere('sentiero');
Dovrai utilizzare il nome del file dall'URL come un buon nome predefinito per salvarlo. Puoi usare il percorso del modulo .nomebase() metodo per ottenere il nome di un file dal relativo URL. Questo metodo accetta un argomento di percorso e restituisce l'ultima parte di un percorso.
Per esempio:
cost nomefile = percorso.nomebase (url);
Quindi, richiedere il file al server richiamando il file https.get() metodo. Questo metodo accetta l'URL come primo argomento e una funzione di callback per la risposta come secondo argomento
Passa il URL variabile come primo argomento e quindi una funzione di callback per l'elaborazione quando questo metodo riceve un flusso di risposta:
https.get (url, (res) => {
})
Nella funzione di callback, puoi usare il fs.createWriteStream() metodo per creare un nuovo flusso scrivibile, passando il file nome del file variabile come argomento.
Per esempio:
cost fileStream = fs.createWriteStream (nome file);
ris.tubo(fileStream);
IL creaWriteStream() Il metodo semplifica il processo di scrittura dei dati in un file, soprattutto quando si gestiscono grandi blocchi di dati.
IL tubo() Il metodo invia quindi il flusso di dati di risposta GET al fileStream oggetto.
Per registrare un messaggio nella console dopo che lo script ha terminato il download del file, allegare a .SU() emettitore di eventi al fileStream variabile:
fileStream.on('fine', () => {
fileStream.vicino();
consolare.tronco d'albero('Download terminato');
});
L'oggetto fileStream emette un file fine evento quando ha scritto tutti i dati nel file. Cattura questo tramite il .SU() metodo e fornire una funzione di callback per chiudere il fileStream e registrare un messaggio nella console.
Per una migliore esecuzione e riusabilità efficiente degli script, avvolgere questo codice in una funzione che prende l'URL come argomento:
funzionedownload file(URL) {
cost nomefile = percorso.nomebase (url);https.get (url, (res) => {
cost fileStream = fs.createWriteStream (nome file);
ris.tubo(fileStream);
fileStream.on('fine', () => {
fileStream.vicino();
consolare.tronco d'albero('Download terminato')
});
})
}
Per eseguire la funzione, chiamala e passa l'URL del file che desideri scaricare:
download file([URL file]);
Per eseguire lo script, apri il tuo terminale ed entra nodo seguito dal nome del file JavaScript:
nodo[nome copione]
Questo script scaricherà l'URL del file passato al file download file() function e salvarlo nella directory di lavoro.
Gestione degli errori durante il download dei file
In Node.js, durante il download dei file potrebbero verificarsi errori specifici come la scrittura nel flusso, una connessione scadente al servizio o problemi con il file stesso. È fondamentale registrare i messaggi di errore quando si verificano questi errori per poter affrontare il problema.
Prova/Prendi Blocco
Un blocco try-catch è una struttura di programmazione che consente di gestire potenziali errori ed eccezioni nel codice.
I blocchi try-and-catch costituiscono il blocco try...catch. Il codice del blocco try viene eseguito per primo e il codice del blocco catch viene eseguito se il blocco try genera un'eccezione.
Tentativo {
download file([URL file]);
} presa (errore) {
consolare.log (errore);
}
Utilizza un blocco try/catch per assicurarti di rilevare eventuali errori relativi al download. È quindi possibile gestire qualsiasi errore, se necessario, come registrarlo sulla console o ritentare il download.
Codice di stato della risposta HTTP
I codici di stato per le risposte HTTP mostrano se una particolare richiesta HTTP è stata eseguita correttamente.
Per esempio:
https.get (url, (res) => {
cost codice = res.statusCode();
consolare.log (codice)
cost fileStream = fs.createWriteStream (nome file);
});
Se la richiesta restituisce un codice di stato al di fuori dell'intervallo di successo, 200-299, si è verificato un problema con la richiesta. Controlla il codice di stato HTTP, quindi cercare il significato del codice di stato per affrontare l'errore se necessario.
Download di più file
È possibile scaricare più file contemporaneamente passando gli URL dei file come argomenti durante l'esecuzione nodo [nome script]. Per eseguire questa attività, è necessario modificare alcune parti dello script.
In JavaScript, gli argomenti passati insieme a nodo sono disponibili in process.argv, una proprietà dell'oggetto Node.js globale. Questa proprietà restituisce un array degli argomenti della riga di comando. Il primo elemento in questo array dovrebbe essere nodo, il comando effettivo che esegui. Il secondo sarà il nome del file dello script, quindi ogni argomento successivo dovrebbe essere un URL.
Per scaricare più file contemporaneamente, salvare l'array da processo.argv in una variabile. Quindi esegui il metodo slice() per rimuovere i primi due elementi, che non sono URL:
cost args = processo.argv;
cost URL = args.slice(2);
IL fetta() Il metodo crea un nuovo array dagli elementi selezionati in un array. Questo metodo seleziona da un inizio specificato a una fine specificata (non inclusiva).
In questo caso, il passaggio di un valore di 2 rimuove il file nodo nome del comando e il nome del file dello script.
Finalmente, utilizzando il metodo map di JavaScript, passare ogni elemento nel file URL matrice a download file():
URL.mappa(URL =>{
scaricaFile (url)
});
Per eseguire il codice, inserisci il file nodo comando insieme al nome del file JavaScript e agli URL che desideri scaricare:
nodo[nome copione]URL1URL2URL3
Utilizzo di una libreria di terze parti
Puoi anche scaricare file utilizzando una libreria di terze parti come npm scaricamento pacchetto.
All'interno della directory degli script, esegui il seguente comando npm per installare il file scaricamento pacchetto:
npm installare scaricamento
Richiedi il pacchetto scaricato nel tuo script, quindi salva gli argomenti della riga di comando in un array:
cost scaricare = richiedere('scaricamento');
cost args = processo.argv;
cost URL = args.slice(2);
Ora puoi usare il scaricamento libreria per scaricare i file. Puoi farlo in diversi modi a seconda del tuo particolare obiettivo.
Per esempio:
asincronofunzionedownload file(URL){
attenderePromettere.all (urls.map((URL) => scarica (url, "File")))
};
downloadFile (url);
Dichiara il download file funzionare come asincrono, e crea un Promettere per attendere fino al completamento dell'attività specifica con il file attendere parola chiave. Mappa il URL matrice al scaricamento funzione e passare il nome di una cartella locale—"File", in questo caso, per archiviare i file in.
Download di file nel file system locale
Le funzioni integrate di Node, come fs e https, semplificano la scrittura di un downloader di file. Per renderlo ancora più semplice, puoi utilizzare un modulo di terze parti come il download.
Entrambi i metodi consentono di scaricare file da un server remoto e salvarli nel file system locale. Dovresti scegliere il metodo migliore per le tue esigenze e utilizzarlo nella tua prossima applicazione Node.js.