Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] simular ajax para subir archivos al servidor

Estas en el tema de simular ajax para subir archivos al servidor en el foro de Javascript en Foros del Web. Hola a todos, como bien dice en el articulo estoy tratando de subir archivos al servidor tipo ajax pues estoy haciendo unos registros q se ...
  #1 (permalink)  
Antiguo 09/07/2013, 12:58
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 4 meses
Puntos: 2
Pregunta simular ajax para subir archivos al servidor

Hola a todos, como bien dice en el articulo estoy tratando de subir archivos al servidor tipo ajax pues estoy haciendo unos registros q se guardan mediante ajax, por lo que he leido la mejor forma es simulando , y esto se logra con un iframe oculto.... bueno la vdd es q he agotado todas las paginas y el unico avance que he tenido ..es subirlos mediante php osea recargando la pagina, y lo q no entiendo es como y donde debe ir la funcion javascript que carga el iframe??
Tengo muchas dudas sobre como esto funciona si alguien me puede ayudar les agradeceria muchisimo


mi formulario index.html

Código HTML:
Ver original
  1. <form  name="frm" action="crearusuario.php" method="post" enctype="multipart/form-data" target="iframeUpload">
  2.           Nit <input name="NitCliente" id="NitCliente" type="text" required>
  3.           RazonSocial  <input name="RazonSocialC" id="RazonSocialC" type="text" required>
  4.                
  5. <p id="mensaje"></p>
  6.             <input type="file" id="archivo" name="archivo" />    
  7.             <iframe name="iframeUpload" style="display:none" ></iframe>          
  8.             <img src="img/addicon.png" width="32" height="32" title="Agregar " id="agregar" class="button">      
  9. </form>

crearusuario.php

Código HTML:
Ver original
  1. $rutaEnServidor='Archivos';
  2. $rutaDestino=$rutaEnServidor.'/'.$nombreImagen;
  3. move_uploaded_file($rutaTemporal,$rutaDestino);
  4.  
  5. $sql = new MySql;
  6. $query = "INSERT INTO empresa (RazonSocial,Ruta)
  7.             VALUES('$rz','$rutaDestino');";
  8. $sql->query($query);

PD: recorté un poquito el codigo, pero creo q ahi se entiende cual es mi avance, espero que me puedan ayudar!! gracias
  #2 (permalink)  
Antiguo 09/07/2013, 13:12
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: simular ajax para subir archivos al servidor

Te recomiendo usar el framework de javascript, jQuery y leerte éste artículo.

http://blog.eltallerweb.com/como-sub...ry-y-ajax-php/
  #3 (permalink)  
Antiguo 09/07/2013, 13:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: simular ajax para subir archivos al servidor

siento q estoy de un pelito pero es q no puedo usar jquery ni json porfavor estoy desesperado !! jeje

Última edición por summerblack; 09/07/2013 a las 13:57
  #4 (permalink)  
Antiguo 09/07/2013, 14:59
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: simular ajax para subir archivos al servidor

De entrada tendras que conocer que para enviar mediante ajax tendras que usar en javascript el objeto XMLHttpRequest (Me limito solo a este pero al final te dejo documentacion donde puedes ver que para otros navegadores antiguos es necesario crear otro objeto (w3schools).

Código Javascript:
Ver original
  1. xmlhttp=new XMLHttpRequest();
  2. xmlhttp.open("GET","demo_get.asp",true);
  3. xmlhttp.send();

Para hacer el envio de un fichero se usa POST. Se puede ver un ejemplo de envio de datos mediante POST:

Código Javascript:
Ver original
  1. xmlhttp.open("POST","ajax_test.asp",true);
  2. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  3. xmlhttp.send("fname=Henry&lname=Ford");

Ya solo queda saber que para enviar archivos hay que hacer uso del objeto FormData.

Código Javascript:
Ver original
  1. xmlhttp.open("POST","ajax_test.asp",true);
  2. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  3. var formData = new FormData();
  4. formData.append("thefile", file);
  5. xmlhttp.send(formData);

Y finalmente hay que mirar lo que se recibe a cambio para comprobar que todo se ha hecho correctamente.

Links:
http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp
http://stackoverflow.com/questions/6211145/upload-file-with-ajax-xmlhttprequest
https://developer.mozilla.org/es/docs/XMLHttpRequest/FormData
https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects?redirectlocale=en-US&redirectslug=Web%2FAPI%2FFormData%2FUsing_FormD ata_Objects

Saludos.
  #5 (permalink)  
Antiguo 09/07/2013, 15:08
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: simular ajax para subir archivos al servidor

Lo del iframe que hablas puede ser 2 cosas segun mi forma de verlo. O estas usando un iframe dentro de tu web para que sea el iframe el que se recargue y no la web entera con lo que hacerlo del modo tradicional digo yo que tendria que funcionar (Aparte de algun problema que tengas de enviar los datos desde tu web al iframe y cosas asi...), o bien te has puesto a mirar sobre lo de mantener una sesion abierta para que sea el servidor el que te pase los datos como [URL="http://es.wikipedia.org/wiki/Comet"]Comet[/URL].

Saludos.

edito: Vale que ahora leo que existe un llamado "metodo del iframe" para subir archivos por que lo anterior igual no funciona tan bien como se dice: [URL="http://www.alfajango.com/blog/ajax-file-uploads-with-the-iframe-method/"]http://www.alfajango.com/blog/ajax-file-uploads-with-the-iframe-method/[/URL]
  #6 (permalink)  
Antiguo 09/07/2013, 16:14
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: simular ajax para subir archivos al servidor

porfin!! muchas gracias por la ayuda k felicidad

Etiquetas: ajax, formulario, html, mysql, php, registro, servidor, simular, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:17.