Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Subir imagen con Jquery Ajax

Estas en el tema de Subir imagen con Jquery Ajax en el foro de Jquery en Foros del Web. Buenas a todos!! Estoy intentando subir una imagen al servidor. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original < form accept - charset = 'utf-8' method = ...
  #1 (permalink)  
Antiguo 11/05/2016, 10:15
 
Fecha de Ingreso: mayo-2016
Mensajes: 3
Antigüedad: 8 años, 7 meses
Puntos: 0
Subir imagen con Jquery Ajax

Buenas a todos!!

Estoy intentando subir una imagen al servidor.

Código PHP:
Ver original
  1. <form accept-charset='utf-8' method='post' id='process_image_form' enctype='multipart/form-data' action='modeloTutor.php'>
  2. <input type='file' id='prueba' name='prueba'>
  3.  <input type='button' id='enviar' value='ENVIAR' onclick='sImagen()'>
  4. </form>

Mediante ajax estoy intentandola pasar al modelo, probé con serialize() y con formData, pero ninguna de las dos me deja.


Código PHP:
Ver original
  1. function sImagen() {
  2.     var formData=new FormData(document.getElementById('process_image_form'));
  3.     formData.append('prueba', $("#prueba")[0].files[0]);
  4.     var $img = $("#prueba");
  5.     $.post( "modeloTutor.php"
  6.        , { form: $("#process_image_form").serialize()
  7.        , prueba: document.getElementById('#prueba')
  8.        , funcion: "addImagen"}
  9.        , function( data ) {
  10.         alert(data);
  11.        });  
  12. }
En el modelo debería de recibir la imagen Prueba


Código PHP:
Ver original
  1. function subirImagen(){
  2.    
  3.     $status="";
  4.     $formulario=$_POST['form'];
  5.  
  6.     $tamano = $_FILES['prueba']['size'];
  7.     $tipo = $_FILES['prueba']['type'];
  8.     $archivo = $_FILES['prueba']['name'];
  9.     $prefijo = substr(md5(uniqid(rand())),0,6);//generamos una id para poder tener imagenes repetidas  
  10.  
  11.     ($archivo != "") or die ("Error al subir la imagen ".$archivo);
  12.     return $resp;
  13.  
  14.          
  15.     ($tipo == "image/jpeg" || $tipo == "image/png" || $tipo == "image/jpg") or die ("Sólo se admiten imágenes en <b>.jpg</b> , <b>.png </b> y <b>.jpeg </b>");
  16.            
  17.     $destino =  "./pruebas/".$prefijo."_".$archivo; //ruta de la imagen original
  18.     (copy($_FILES['prueba']['tmp_name'],$destino)) or die ("Error al subir la imagen ".$archivo);
  19.     $status = "La imagen <b>".$archivo."</b> se a subido correctamente !";
  20.     $post=$destino;    
  21.    
  22.     $sql="INSERT INTO imagenes (ruta) values('$destino') ";
  23.     $res=mysql_query($sql,$conexion);
  24.  
  25. }


pero me salta el error

<b>Notice</b>: Undefined index: prueba in <b>/Applications/XAMPP/xamppfiles/htdocs/downprogress/proyecto/modeloTutor.php</b> on line <b>257</b><br />

¿alguien me puede ayudar?

Última edición por fjhg0002; 11/05/2016 a las 10:45
  #2 (permalink)  
Antiguo 12/05/2016, 08:30
 
Fecha de Ingreso: diciembre-2015
Ubicación: rosario
Mensajes: 69
Antigüedad: 9 años
Puntos: 5
Respuesta: Subir imagen con Jquery Ajax

Si no te es muy drástico cambia el $.post por $.ajax y para enviar archivos el parametro processData:false siempre debe estar en false

Código Javascript:
Ver original
  1. $.ajax({
  2. url: "ajax_php_file.php", // Url to which the request is send
  3. type: "POST",             // Type of request to be send, called as method
  4. data: new FormData(this), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
  5. contentType: false,       // The content type used when sending data to the server.
  6. cache: false,             // To unable request pages to be cached
  7. processData:false,        // To send DOMDocument or non processed data file it is set to false
  8. success: function(data)   // A function to be called if request succeeds
  9. {
  10. $('#loading').hide();
  11. $("#message").html(data);
  12. }
  13. });
  #3 (permalink)  
Antiguo 12/05/2016, 08:48
 
Fecha de Ingreso: mayo-2016
Mensajes: 3
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Subir imagen con Jquery Ajax

@infoturnosya yo lo que necesito es poder llamar además a una función dentro de ajax_php_file.php
  #4 (permalink)  
Antiguo 13/05/2016, 03:21
 
Fecha de Ingreso: mayo-2016
Mensajes: 3
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Subir imagen con Jquery Ajax

Así quedó la solución, gracias a la respuesta de nuestro compañero

Código PHP:
Ver original
  1. function sImagen() {
  2.     var formData=new FormData(document.getElementById('process_image_form'));
  3.     formData.append( "funcion", "addImagen");
  4.     //var fileName = $("#prueba")[0].files[0].name;
  5.     $.ajax({
  6.        url: "modeloTutor.php",
  7.        type: "POST",
  8.        data: formData,
  9.        //funcion: "addImagen",
  10.        contentType: false,
  11.        cache: false,
  12.        processData: false,
  13.        success: function(data){
  14.         alert("subida imagen correctamente" + data);
  15.        }
  16.     });
  17. }

Etiquetas: ajax
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 09:30.