Javascript: Subir multiples archivos en un solo envío con diferentes cajas input:file

publicado por: Anonymous

Cómo podría hacer con Javascript para generar un input:file múltiple pero tomando los archivos de diferentes input files, me explico:

<inpu type="file" name="file1">
<inpu type="file" name="file2">
<inpu type="file" name="file3">

Para enviarlos con Javascript usando ajax debería hacer algo como esto:

fd = new FormData();
xhr = new XMLHttpRequest();
fd.append('file1', file1, file1.name);
fd.append('file2', file2, file2.name);
fd.append('file3', file3, file3.name);
xhr.open('post', url, true);
xhr.send(fd);

Lo que yo necesito (porque mi aplicación crea diferentes campos input:file dinámicamente y no debo cambiar esa funcionalidad) es usar un código similar a esto:

fd.append('archivos', files, "archivos");

Donde “files” es un arreglo de archivos.

¿Por qué debe ser así?

Porque en Node estoy usando Multer y para subir archivos múltiples debo usar un middleware como el siguiente:

api.post('/equipos/uploadfiles', upload.array('archivos', 12), equipoController.uploadFiles);

Dato: Estoy usando Angular y la subida de archivos ya la tengo lista, pero uno por uno.

solución

La solución a mi problema fue realmente sencilla y la comparto con ustedes:

Todos los archivos los he añadido a aun arreglo y luego los iteré de la siguiente forma:

for(var i in files ) {
   fd.append('archivos', files[i], files[i].name );
}

Espero le sirva a alguien.

Respondido por: Anonymous

Leave a Reply

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