Al subir imágenes y/o archivos al servidor usando AJAX nos ayudara a evitar la clásica recarga cuando se suben archivos.
En este articulo les mostrare como subir imágenes al servidor usando AJAX, PHP, MySQL y también la útil librería class.upload.php
Para mas información sobre la la librería class.upload.php, les invito a revisar su pagina oficial http://www.verot.net/php_class_upload.htm
Código
Empecemos a codificar, lo primero que haremos sera el formulario para subir imágenes, es un formulario normal, con el enctype=”multipart/form-data”, un campo tipo “file” y un botón de submit.
[code language=”html”]<form id="upload_image" method="post" action="upload.php" enctype="multipart/form-data">
<div class="form-group">
<label for="exampleInputFile">Imagen</label>
<input type="file" id="image" name="image" required>
</div>
<button type="submit" class="btn btn-primary">Subir imagen</button>
</form>
El siguiente codigo es el codigo AJAX para procesar el formulario y por supuesto subir la imagen o archivo definida en el form.
[code language=”javascript”] $(‘#upload_image’).on(‘submit’,(function(e) {e.preventDefault();
var formData = new FormData(this);
$.ajax({
type:’POST’,
url: $(this).attr(‘action’),
data:formData,
cache:false,
contentType: false,
processData: false,
success:function(data){
console.log("success");
console.log(data);
$("#image").val("");
},
error: function(data){
console.log("error");
console.log(data);
}
});
}));
[/code]
Como se puede ver usamos FormData para pasar al parámetro data de la función $.ajax de jquery.
Ahora vamos con el codigo PHP.
$handle = new Upload($_FILES["image"]);
if ($handle->uploaded) {
$handle->Process("uploads/");
if ($handle->processed) {
// usamos la funcion insert_img de la libreria db.php
// insert_img("","uploads/",$handle->file_dst_name);
} else {
echo ‘Error: ‘ . $handle->error;
}
} else {
echo ‘Error: ‘ . $handle->error;
}
unset($handle);
[/code]
Usamos la librería class.upload.php para subir las imágenes, este es una pieza de codigo muy util, y como podemos notar es la misma para subir imágenes con ajax y sin ajax, por lo que este procedimiento no cambia.
Resultado
A continuación una captura de pantalla del resultado.
Descargar
Aqui les dejo un link de descarga con todos los archivos que utilice en mi ejemplo.
[sociallocker]Link: https://drive.google.com/file/d/1DaqmbBTw308ZxWn7Mqsiwn4eOHr9zzqc/view?usp=sharing
[/sociallocker]Instalación
Para instalar el ejemplo deben:
- Copiar el contenido a la carpeta htdocs del xampp o similar
- Crear en MySQL la base de datos y tablas que se encuentran en schema.sql
- Modificar el archivo db.php para la conexión a la base de datos
- Ejecutar http://localhost/upload-image-ajax
Recuerden suscribirse a mi blog y a mi canal de youtube, Saludos