> Faqs > Upload de ficheros fuera del document root

Upload de ficheros fuera del document root

Si quiero proteger los ficheros subidos por un usuario... realizando el upload directamente con PHP. ¿Hay manera de subirlos y dejarlos fuera del document root? (y cómo hacerlo?)

Así, immediatament después de subirlos quedaría ya no expuestos... solo se podrían descargar mediante código PHP.

Gracias

Respuestas

Efectivamente, es importante que los archivos que deben permancer privados queden fuera del document root. Ya que solamente estarán accesibles para los usuarios mediante código PHP, que se encargaría de realizar las validaciones oportunas antes de proporcionar su descarga o visualización al usuario. Este es el tema del artículo Proteger archivos descargables en PHP.

El medio de subir los archivos fuera del document root en principio es el mismo que usas para subir cualquier archivo en PHP. El único detalle es que, cuando haces el move_uploaded_file(), indicas la ruta de donde tienes que colocar los archivos.

Sería algo parecido a esto:

$nombre_archivo = $_FILES['userfile']['name'];
$carpeta_de_subida = '../../data/uploaded_files';
move_uploaded_file($tmp_name, "$carpeta_de_subida/$nombre_archivo");

Si te fijas, la carpeta de subida se colca con una ruta relativa al archivo PHP que estaría ejecutando ese código y tendríamos que subir varios directorios hacia arriba, los suficientes para salir del document root.

Miguel Angel
3140 140 209 17

Simplemente usa rutas relativas en tus uploads.

Lo que no recomiendo nunca es usar rutas absolutas, porque si lo haces tendrás que cambiar tu código cuando mires la web a un servidor nuevo que posiblemente tenga una estructura de archivos diferente.

Salva
268 3 19 4