Que tal amigos,
De nueva cuenta les escribo pero esta vez para poner mi granito de arroz.
En estos días estoy haciendo una aplicación donde tengo que subir fotos al servidor, después de buscar en las FAQ's del foro encontré muchos temas, pero ninguno de ellos explicaba de manera sencilla como hacer un upload de archivos. Tras una búsqueda de 3 días en google (Sólo Dios sabe cuanto tiempo más me hubiera tomado sin Mr. Google) di con una página que explicaba con un ejemplo muy sencillo como hacer un upload sólo que esta en ingles, por lo que me di a la tarea de traducirlo y compartirlo con ustedes, espero les sirva tanto cómo a mi.
__________________________________________________ ______________
php-Carga de archivos
Un aspecto muy practico de php es la habilidad de manejar carga de archivos a tu servidor. Permitir a los usuarios cargar archivos a tu servidor abre la caja de pandora, así que se cuidadoso al permitir la carga de archivos.
php-Carga de archivos: formulario html
Antes de poder usar php para manejar las cargas de archivos, debemos construir un formulario HTML que permita a los usuarios seleccionar el archivo a cargar.
Código HTML:
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
Esta es una breve descripción de las partes importantes del código HTML.
- enctype="multipart/form-data" - Necesario para que nuestro archivo PHP (por crear) funcione correctamente.
- action="uploader.php" - Nombre de nuesta página PHP, la cual crearemos más adelante
- method="POST" - Informa al navegador que deseamos enviar información al servidor usando el metodo POST.
- input type="hidden" name="MA..." - Establece el tamaño máximo del archivo en bytes, que puede ser cargado. Este mecanismo de seguridad puede ser facilmente evadido por lo que mostraremos una solución de respaldo en PHP. En este ejemplo hemos establecido el tamaño maximo del archivo en 100KB.
- input name="uploadedfile" - uploadedfile es como vamos a acceder el archivo en nuestro script PHP.
Guarda el código del formulario en un archivo nombrándolo
upload.html.
Después que el usuario da clic en el botón Upload File, los datos serán transmitidos al servidor y el usuario sera redirigido a
uploader.php. Este archivo PHP va a procesar el formulario y hará todo el trabajo.
php-Carga de archivos: ¿Qué es lo que va a hacer php?
Ahora que tenemos creado el formulario podemos empezar con el script PHP que manejara nuestras cargas o subidas. Generalmente, el archivo PHP deberá tomar una decisión con
TODOS los archivos a cargar: mantener el archivo o desecharlo. Un archivo puede ser desechado por varias razones, incluyendo:
- El archivo es muy grande y no queremos mantenerlo en el servidor.
- Deseamos que la persona cargue una foto pero, cargo algo distinto, por ejemplo un ejecutable (.exe)
- Hubo problemas al subir el archivo por lo tanto no puede ser guardado.
Este ejemplo es muy simple por lo que se omite el código que añadiría dicha funcionalidad. php-Carga de archivos: uploader.php
Cuando el archivo
upluader.php se ejecuta, el archivo que hemos cargado, existe en un área temporal de almacenamiento del servidor, si el archivo no es movido a un lugar diferente será
¡eliminado! Para salvaguardar nuestro preciado archivo usaremos $_FILES
arreglo asociativo.
El arreglo $_FILES es donde PHP almacena la información acerca de los archivos. Hay tres elementos de este arreglo que necesitamos entender para este ejemplo.
- uploadedfile - uploadedfile es la referencia que le referencia que le asignamos en nuestro archivo en el formulario HTML. Necesitaremos esto para decirle al arreglo $_FILES con cual archivo queremos trabajar.
- $_FILES['uploadedfile']['name'] - name contiene la ruta original del archivo que el usuario desea cargar.
- $_FILES['uploadedfile']['tmp_name'] - tmp_name contiene la ruta al archivo temporal que esta en el servidor. El archivo debe existir en el servidor en un directorio temporal con un nombre temporal.
Finalmente podemos empezar a escribir nuestro script PHP para cargar un archivo. Así es como obtendremos el nombre temporal de nuestro archivo, le daremos un nombre permanente y seleccionaremos un lugar para almacenar el archivo.
Código PHP:
// Where the file is going to be placed
$target_path = "uploads/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
NOTA: Sera necesario crear una nueva carpeta en el directorio donde reside nuestro archivo
uploader.php llamada "uploads", donde vamos a guardar los archivos.
La carpeta donde guardaremos los archivos debe tener por lo menos los privilegios en '775' para poderlo hacer*.
Bien ahora ya tenemos todo lo que necesitamos para cargar nuestro archivo al servidor.
$target_path contiene la ruta donde deseamos guardar el archivo.
php-Carga de archivos: Función move_uploaded_file
Ahora, todo lo que tenemos que hacer es llamar a la función
move_uploaded_file y dejar que PHP haga su magia.
La función
move_uploaded_file necesita saber 1) La ruta del archivo temporal (¡Listo!) 2) La ruta donde el archivo será movido (¡Listo!).
Código PHP:
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
Si la carga se hizo correctamente, entonces podrás ver el texto "The file
filename has been uploaded". Esto es porque
move_uploaded_file regresa
true si el archivo fue movido y
false si ha habido un problema.
Si hubo un problema entonces el mensaje de error "There was an error uploading the file, please try again!" se desplegara.
php-Carga de archivos: ¡Practicas seguras! NOTA: Este script es para propósitos educativos solamente. No recomendamos poner esto en una página web que este a la vista del público.
Las lineas de código aquí expuestas permitirán que cualquiera pueda subir archivos a tu servidor. Por lo tanto, recomendamos que no tengas un cargador de archivos tan simple como este para el público en general. De otro modo tu servidor podría llenarse de basura o comprometer la seguridad del mismo.
Esperamos que hayas disfrutado aprendiendo como trabajar con la carga de archivos en PHP. En un futuro cercano estaremos agregando una lección avanzada que incluirá más seguridad y características adicionales.
*Cursivas mias
__________________________________________________ ___________
Espero que esta traducción les sea de utilidad a quien busque como subir archivos de manera sencilla y comprender un poco el funcionamiento del mismo.
Cómo aun no puedo publicar links dejare escrita la dirección del tutorial original(ingles) en una forma poco convencional.
triple w punto tizag punto com/phpT/fileupload.php
Saludos.