Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Recibir valor de input file desde un js

Estas en el tema de Recibir valor de input file desde un js en el foro de Jquery en Foros del Web. Hola a todos tengo un formulario donde debo subir ciertos archivos FORMULARIO Expediente Código HTML: <div> <label for= "email" accesskey= "E" > Acta de Nacimiento ...
  #1 (permalink)  
Antiguo 27/07/2020, 12:30
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.284
Antigüedad: 9 años, 1 mes
Puntos: 12
Recibir valor de input file desde un js

Hola a todos tengo un formulario donde debo subir ciertos archivos

FORMULARIO
Expediente
Código HTML:
<div>
<label for="email" accesskey="E"> Acta de Nacimiento</label>
<input type="file" size="25" id="nomArch1" name="nomArch1" />
</div> 
En un .js recojo mis inputs para después procesarlos en un PHP
.JS
Código:
$.post(action, {
			

			nombre: $('#nombre').val(),
			nomArch1:$('#nomArch1').val(),
			}
PHP

ANTES SOLO CON PHP LO CAPTABA ASÍ Y FUNCIONABA (pero tuve que implementar algunas validaciones con js)
CÓDIGO ANTERIOR (FUNCIONABA)
Código PHP:
$final=”AQUÍ TENGO UN NUMERO DADO DE UNA CONSULTA”;
$acta="acta".$final;
move_uploaded_file ($_FILES['nomArch1'] ['tmp_name'], $destino '/' $_FILES ['nomArchi1'] ['name']);
$ruta1="doc/".$_FILES['nomArchi1'] ['name']; 

Ahora despues de meter mis datos en el js
Hice un echo para ver que me arrojaba , pero no se muestra nada

Código PHP:
echo "Archivo 1".$nomArch1=$_POST['nomArch1']; 
Nota el input nombre si se pasa correctamente

Tengo que hacer algo "esoecial" para los inputs file???

Gracias por su tiempo
  #2 (permalink)  
Antiguo 27/07/2020, 21:07
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.450
Antigüedad: 8 años, 8 meses
Puntos: 939
Respuesta: Recibir valor de input file desde un js

Para enviar archivos mediante Ajax, necesitas hacer uso del objeto FormData. Tienes que crear una instancia del mismo, añadir los datos a enviar, establecer un par de valores, y proceder con el envío.

Código Javascript:
Ver original
  1. //Creas la instancia del objeto
  2. var data = new FormData();
  3.  
  4. //Le añades los datos a enviar
  5. data.append("miNombre", $("#txtNombre").val());
  6. data.append("miArchivo", $("#archivo")[0].files[0]);
  7.  
  8. //Estableces los valores necesarios en el método $.Ajax() y envías todo
  9. $.ajax({
  10.     url: "ejemplo.php",
  11.     type: "post",
  12.     data: data,
  13.     processData: false,
  14.     contentType: false
  15. }).done(function(respuesta){
  16.     //Aquí haces algo con la respuesta del servidor
  17. });

También puedes añadir el formulario entero en una sola línea en lugar de añadir uno a uno los datos a enviar. Ambas formas son válidas:

Código Javascript:
Ver original
  1. var data = new FormData($("#idForm")[0]);

Recuerda que he utilizado datos de ejemplo. Tienes que adaptarlo a lo que tienes. En caso de dudas, revisa la información de los enlaces adjuntos más arriba.

NOTA: Este es un tema de jQuery (que también se puede resolver con Vanilla JavaScript [código JavaScript puro]), no de PHP.

__________________
«Laissez faire et laissez passer, le monde va de lui même»

Última edición por Alexis88; 28/07/2020 a las 23:32
  #3 (permalink)  
Antiguo 28/07/2020, 02:01
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.284
Antigüedad: 9 años, 1 mes
Puntos: 12
Respuesta: Recibir valor de input file desde un js

Alexis88 muchas gracias he adecuado el código y por fin he podido guardar el valor de file.


Código:
 var formData = new formData(form);
        	
 formData.append('nomArch1[]',nomArch1);



La zona horaria es GMT -6. Ahora son las 18:24.