Comunidad de diseño web y desarrollo en internet online

como subir archivo con este AJAX?

Citar            
MensajeEscrito el 26 Nov 2011 03:14 pm
Buenos días desde Venezuela,
compañeros de cristalab mi inconveniente es el siguiente tengo un codigo ajax por el cual mando los datos de un formulario pero cuando el formulario envia archivos es decir cuando se le agrega el atributo enctype="multipart/form-data" al formulario manda este campo vacio.

aqui el AJAX que utilizo:

Código Javascript :

<script language="javascript" src="../js/jquery-1.3.min.js"></script>
<script language="javascript">
$(document).ready(function() {
    $().ajaxStart(function() {
        $('#loading').show();
        $('#result').hide();
    }).ajaxStop(function() {
        $('#loading').hide();
        $('#result').fadeIn('slow');
    });
    $('#form, #fat, #fo4').submit(function() {
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(data) {
                $('#result').html(data);

            }
        })
        
        return false;
    }); 
})  
</script>



También utilizo un archivo Jquery, bueno el formulario creo q no es necesario colocarlo prque es un input normal

Código HTML :

<form action="form.php" method="post" name="fo4" id="fo4" enctype="multipart/form-data">
Archivo:<input type="file" name="archivo" id="archivo" />
</form>


el archivo from.php solo recibiria los datos para ser guardados en la base de datos.

Código PHP :

$tamano = @$_FILES["archivo"]['size'];
   $tipo = @$_FILES["archivo"]['type'];
   $archivo = @$_FILES["archivo"]['name'];
   $prefijo = substr(md5(uniqid(rand())),0,6);
   
   if ($archivo != "") {
      // guardamos el archivo a la carpeta files
      $destino =  "imagenes/".$prefijo."_".$archivo;
      //if(@move_uploaded_file($_FILES['archivo']['tmp_name'], $destino)){
      if (copy(@$_FILES['archivo']['tmp_name'],$destino)) {
         $status = "Archivo subido: <b>".$archivo."</b>";
      } else {
         $status = "Error al subir el archivo";
      }
   } else {
      $status = "Error al subir archivo";
   }
//luego simplemente insertaríamos en la base de datos.

$insert:"INSERT INTO prueba(archivo) VALUES('".$destino."')";
mysql_select_db($database_conexion, $conexion);
$Resultset = mysql_query($insert, $conexion) or die(mysql_error());
//imprimimos un echo que es el que se mostrara en el div resultado.
echo " Sitio Actualizado correctamente";


Esto es lo que estoy tratando de hacer para subir una foto mediante ajax, el inconveniente es que cuando paso del formulario, al arhivo form.php que recibe no me esta recibiendo $_FILES, por lo cual me deja todo en blanco y no hace nada mi deducción es que el ajax solo me esta mandando el POST y no esta funcionando el atributo enctype="multipart/form-data" es decir no lo tiene, el ajax q estoy utilizando, espero me pueda aconsejar o ayudar en como agregarle esa función al AJAX.

Por simplepanas

20 de clabLevel



Genero:Masculino  

ing sistemas

chrome
Citar            
MensajeEscrito el 27 Nov 2011 07:15 pm
AJAX no soporta subida de archivos, (o talvez si con los mucho avances que han habido, pero no en todos los navegadores) el truco para hacer eso es hacer un iframe para la subida del archivos a modo de no refrescar toda la pagina cuando lo subas

Por hersonHN

Claber

272 de clabLevel

3 tutoriales

Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Nov 2011 07:24 pm
Primero que nada gracias por escribir, pero bueno el truco del IFRAME no me parece atractivo, quizás utilizando JQUERYu otro método, espero ver si alguien comenta de alguna solución diferente a lo del IFRAME=D. Gracias igual por aportar tu idea =P!

Por simplepanas

20 de clabLevel



Genero:Masculino  

ing sistemas

chrome
Citar            
MensajeEscrito el 27 Nov 2011 07:33 pm
En realidad es el metodo mas usado, no necesariamente tienes que poner el form detro del iframe puedes crear un iframe en blanco y que la propiedad target del form dirija los datos al iframe que estara oculto seria algo asi...

Código HTML :

<form target="myiframe"  .... >
........ 
</form>
<iframe name="myiframe"  ..... style="display:none"></iframe>



asi los datos enviados del form (incluyendo los archivos se irían al iframe (osea a la pagina que este dentro del iframe) y no recargaría toda la ventana

Por hersonHN

Claber

272 de clabLevel

3 tutoriales

Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Nov 2011 11:16 pm
si, bueno eso ultimo que escribiste fue lo que entendí desde que comentaste =D. Muchas gracias por la pronta respuesta y por querer ayudarme =D!

Por simplepanas

20 de clabLevel



Genero:Masculino  

ing sistemas

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.