el asunto no es el codigo se subida, ya que si te funciono sin problemas, pues eso no tiene problemas, lo que tienes que hacer es crear un archuivo intermedio entre la peticion en tu enlace y el archivo que force la descarga de este, algo asi:
Código PHP:
Ver original//verificamos la variable que llega, si esta vacia detenemos el codigo o redireccionamos
if (!isset($_GET['file']) || empty($_GET['file'])) { }
$root = "archivos/";/*Directorio donde se guardan los archivos*/
$file = basename($_GET['file']);/*Asigno el nombre del archivo ue llega a una variable*/ $path = $root.$file;/*creo la ruta a mi archivo*/
$type = '';
}
if ($type == '') {
$type = "application/force-download";
}
// Definir headers
header("Content-Type: $type"); header("Content-Disposition: attachment; filename=$file"); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . $size); // Descargar archivo
} else {
die("El archivo no existe."); }
y los enlaces quedaria asi:
Código HTML:
Ver original<a href="descarga.php?file=nombrearchivo.rar">Descargar
</a>
ya alli podrás forzar la descarga del archivo documento o imagen sin revelar la ruta completa hacia este. Tambien podrias complementarlo colocadole un codigo para trabajar con sesiones y solo los logueados descargan o que acepte solo peticiones que provengan desde dentro de tu server. Saludos