Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Descargar archivos al almacenamiento local en lugar de guardarlos en la nube tiene varias ventajas. Estos incluyen un acceso más fácil, acceso sin conexión a Internet y propiedad completa de sus datos.

Puede descargar archivos individuales y múltiples utilizando los módulos integrados de Node.js. También puede usar una biblioteca de terceros para lograr los mismos resultados.

Descarga de archivos sin una biblioteca de terceros

Para descargar un archivo usando Node.js, sin la ayuda de paquetes de terceros, necesitará tres módulos principales de Node.js: fs, https, y camino.

El fs El módulo admite muchas tareas de archivos, incluidas la lectura, la creación, la actualización, la eliminación y el cambio de nombre. El https El módulo crea un servidor web para manejar solicitudes y entregar respuestas. El camino El módulo proporciona una forma de interactuar con rutas de directorios y archivos.

instagram viewer

Con estos módulos, puede enviar una solicitud HTTP GET para acceder a un recurso de archivo desde un servidor web y luego hacer una copia del recurso en su sistema local.

Para comenzar, importe los módulos requeridos:

constante https = requerir('https');
constante f = requerir('fs');
constante camino = requerir('camino');

Deberá usar el nombre de archivo de la URL como un buen nombre predeterminado para guardarlo. Puede usar el módulo de ruta .nombrebase() para obtener el nombre de un archivo a partir de su URL. Este método toma un argumento de ruta y devuelve la última parte de una ruta.

Por ejemplo:

constante nombre de archivo = ruta.nombrebase (url);

Luego, solicite el archivo del servidor invocando el https.get() método. Este método toma la URL como primer argumento y una función de devolución de llamada para la respuesta como segundo argumento.

Pasa el URL variable como el primer argumento y luego una función de devolución de llamada para procesar cuando este método recibe un flujo de respuesta:

https.get (url, (res) => {
})

En la función de devolución de llamada, puede utilizar el fs.createWriteStream() método para crear una nueva secuencia grabable, pasando el Nombre del archivo variable como argumento.

Por ejemplo:

constante fileStream = fs.createWriteStream (nombre de archivo);
resolución.tubo(fileStream);

El crearEscribirStream() El método facilita el proceso de escribir datos en un archivo, especialmente cuando maneja grandes cantidades de datos.

El tubo() El método luego envía el flujo de datos de respuesta GET al fileStream objeto.

Para registrar un mensaje en la consola después de que el script haya terminado de descargar el archivo, adjunte un .en() emisor de eventos al fileStream variable:

fileStream.on('finalizar', () => {
fileStream.cerca();
consola.registro('Descarga finalizada');
});

El objeto fileStream emite un finalizar evento cuando ha escrito todos los datos en el archivo. Captura esto a través de la .en() método y proporcionar una función de devolución de llamada para cerrar el fileStream y registre un mensaje en la consola.

Para una mejor ejecución y reutilización eficiente de scripts, envuelva este código en una función que tome la URL como su argumento:

funcióndescargar archivo(URL) {
constante nombre de archivo = ruta.nombrebase (url);

https.get (url, (res) => {
constante fileStream = fs.createWriteStream (nombre de archivo);
resolución.tubo(fileStream);

fileStream.on('finalizar', () => {
fileStream.cerca();
consola.registro('Descarga finalizada')
});
})
}

Para ejecutar la función, llámela y pase la URL del archivo que desea descargar:

descargar archivo([dirección del archivo]);

Para ejecutar el script, abra su terminal e ingrese nodo seguido del nombre del archivo JavaScript:

nodo[nombre del guión]

Este script descargará la URL del archivo que le pasó al descargar archivo() y guárdelo en su directorio de trabajo.

Manejo de errores al descargar archivos

En Node.js, pueden ocurrir errores específicos como escribir en la secuencia, una conexión de servicio deficiente o problemas con el archivo en sí al descargar archivos. Es crucial registrar los mensajes de error cuando se producen estos errores para poder abordar el problema.

Bloque de prueba/captura

Un bloque try-catch es una estructura de programación que le permite manejar posibles errores y excepciones en su código.

Los bloques try-and-catch forman el bloque try...catch. El código del bloque try se ejecuta primero y el código del bloque catch se ejecuta si el bloque try arroja una excepción.

intentar {
descargar archivo([dirección del archivo]);
} atrapar (error) {
consola.log (error);
}

Use un bloque try/catch para asegurarse de que puede detectar cualquier error relacionado con la descarga. Luego puede manejar cualquier error según sea necesario, como iniciar sesión en la consola o volver a intentar la descarga.

Código de estado de respuesta HTTP

Los códigos de estado para las respuestas HTTP muestran si una solicitud HTTP en particular se llevó a cabo con éxito.

Por ejemplo:

https.get (url, (res) => {
constante código = res.statusCode();
consola.log (código)
constante fileStream = fs.createWriteStream (nombre de archivo);
});

Si la solicitud devuelve un código de estado fuera del rango de éxito, 200-299, Hubo un problema con la solicitud. Verifique el código de estado HTTP, luego busque el significado del código de estado para tratar el error según sea necesario.

Descarga de varios archivos

Puede descargar varios archivos simultáneamente pasando las URL del archivo como argumentos cuando se ejecuta nodo [nombre del script]. Para realizar esta tarea, debe modificar ciertas partes de su secuencia de comandos.

En JavaScript, los argumentos se pasan junto con el nodo están disponibles en process.argv, una propiedad del objeto global Node.js. Esta propiedad devuelve una matriz de argumentos de la línea de comandos. El primer elemento de esta matriz debe ser nodo, el comando real que ejecuta. El segundo será el nombre del archivo del script, luego cada siguiente argumento debe ser una URL.

Para descargar varios archivos a la vez, guarde la matriz de proceso.argv en una variable. Luego ejecute el método slice() para eliminar los dos primeros elementos, que no son URL:

constante argumentos = proceso.argv;
constante urls = args.segmento(2);

El rebanada() El método crea una nueva matriz a partir de elementos seleccionados en una matriz. Este método selecciona desde un inicio específico hasta un final específico (no inclusivo).

En este caso, pasar un valor de 2 elimina el nodo nombre de comando y su nombre de archivo de secuencia de comandos.

Finalmente, utilizando el método de mapa de JavaScript, pase cada elemento en el direcciones URL matriz a descargar archivo():

urls.mapa(URL =>{
descargar archivo (url)
});

Para ejecutar el código, ingrese el nodo comando junto con el nombre de su archivo JavaScript y las URL que desea descargar:

nodo[nombre del guión]url1url2url3

Uso de una biblioteca de terceros

También puede descargar archivos usando una biblioteca de terceros como npm descargar paquete.

Dentro de su directorio de secuencias de comandos, ejecute el siguiente comando npm para instalar el descargar paquete:

npm instalar descargar

Solicite el paquete descargado en su secuencia de comandos, luego guarde los argumentos de la línea de comandos en una matriz:

constante descargar = requerir('descargar');
constante argumentos = proceso.argv;
constante urls = args.segmento(2);

Ahora puede utilizar el descargar biblioteca para descargar archivos. Puede hacer esto de varias maneras dependiendo de su objetivo particular.

Por ejemplo:

asíncronofuncióndescargar archivo(direcciones URL){
esperarPromesa.all (urls.mapa((URL) => descargar (url, "archivos")))
};

descargar archivo (URL);

declarar el descargar archivo funcionan como asíncronoy crea un Promesa esperar hasta que la tarea en particular se complete con el esperar palabra clave. Mapear el direcciones URL matriz a la descargar función y pasar el nombre de una carpeta local—"archivos", en este caso, para almacenar los archivos.

Descarga de archivos al sistema de archivos local

Las funciones integradas de Node, como fs y https, facilitan la creación de un descargador de archivos. Para hacerlo aún más fácil, puede usar un módulo de terceros como descargar.

Ambos métodos le permiten descargar archivos desde un servidor remoto y guardarlos en el sistema de archivos local. Debe elegir el mejor método para sus necesidades y usarlo en su próxima aplicación Node.js.