Ajax javascript + php upload script
Bueno este tema lo pongo por que he leido en este y otros que muchos preguntan ¿Como subir archivos con Ajax?.
Respuesta Simple: NO SE PUEDE
Solucion practica: Simular un script que trabaje similar a AJAX
Dejo un pequeño manual de como hacer un script En AJAX pero sin AJAX, solo lean y entiendan:
La fuente de donde saque la informacion la dejo masabajo ya que este tuto no lo hice yo pero si tambien puse algunas palabras mias y bueno cuando lo leí resulto ser lo mas practico que encontre,.
Recomendacion: Si no sabe no haga preguntas torpes, busque en google y entienda lo que se explica en foros como este.
Manual:
Como se dice en algunos lugares o foros, los desarrolladores han buscado la forma de "SIMULAR" scripts para subir archivos"COMO SI FUESE" ajax---
1.- Tenemos un formulario con un campo tipo file, el cual nos permitirá enviar el archivo a nuestro servidor PHP. La respuesta del servidor se hará en el IFRAME, actor principal de esta novela.
2.- El script ejecutado en nuestro server a causa del action del formulario es el encargado de copiar el archivo temporal en un espacio físico dentro del mismo.
3.- Luego, con unpoco de ayuda de JS imprimiremos un mensaje correspondiente al estado final de nuestro script.
algo como esto mira:
Código: Seleccionar todo
Upload.php
Archivo:
Es es un simple formulario HTML con un campo FILE y un marco flotante iframe denominado iframeUpload. Cuando enviamos elarchivo al servidor ejecutaremos el script controlUpload.php y la respuesta del server se hará en nuestro iframe ya que apuntamos al mismo dentro de la etiqueta target en la declaración form.
Código: Seleccionar todo
controlUpload.php
// Script Que copia el archivo temporal subido al servidor en un directorio.
echo 'Nombre Temporal:'.$_FILES['fileUpload']['tmp_name'].'';
echo 'Nombre en el Server: '.$_FILES['fileUpload']['name'].'';
echo 'Tipo de Archivo: '.$_FILES['fileUpload']['type'];
$tipo = substr($_FILES['fileUpload']['type'], 0, 5);
// Definimos Directorio donde se guarda el archivo
$dir = 'archs/';
// Intentamos Subir Archivo
// (1) Comprovamos que existe el nombre temporal del archivo
if(isset($_FILES['fileUpload']['tmp_name'])) {
// (2) - Comprovamos que se trata de un archivo de imágen
if ($tipo == 'image') {
// (3) Por ultimo se intenta copiar el archivo al servidor.
if (!copy($_FILES['fileUpload']['tmp_name'], $dir.$_FILES['fileUpload']['name']))
echo ' alert("Error al Subir el Archivo");';
}
else echo 'El Archivo que se intenta subir NO ES del tipo Imagen.';
}
else echo 'El Archivo no ha llegado al Servidor.';
Claro esta que hasta este punto el script aun es normal como cualquier otro, con boton enviar, etc...
Cuando se ejecuta el script, este intenta rescatar los datos del archivo a subir. Para eso se vale del array global de PHP$_FILES. Si no estas muy familiarizado recomiendo que leas esta sección del manual oficial para entender su funcionamiento y sus particularidades.
En las primeras líneas presentamos el nombre del archivo temporal generado por nuestro motor PHP, el segundo es el nombre real del archivo y el tercero es el tipo de archivo.
Si estos valores están definidos evidentemente el archivo llego al server.Estas líneas mas adelante no las utilizaremos; ahora sólo las usamos para realizar el seguimiento del script.
Asignamos a $tipo el tipo de archivo para poder controlar que sea una imágen. Se cortan los primeros 5 caracteres y si todo es correcto $tipo tendrá el valor image. Si no es una imagen tendrá un valor distinto. Este control se puede hacer de diversas formas; nosotros utilizamos esta....
Regístrate para leer el documento completo.