Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/07/2004, 13:48
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Si esa ruta de archivo está fuera de tu "Document Root" de tu servidor HTTP .. no vas a poder descargar el archivo así directamente.

Lo que podrías hacer es un "lanzador" de archivos para que sea PHP el que lea el archivo desde su ruta (si es que tiene permisos y no hay limitaciones tipo "open_base_dir" o "safe_mode" aplicandose) y lo entregue el buffer de salida.

Algo tipo:

bajar.php
Código PHP:
<?

// OPCIONAL!
// Tu consulta a tu BD para obtener la ruta del archivo dado por referencia.
$sql="SELECT refr_uri_sist FROM nose WHERE id_nose='".$_GET['id_archivo']."'";
$resultado=mysql_query($sql);
$refr_uri_sist=mysql_result($resultado,0);

// o bien pasas por el URL el $refr_uri_sist .. (peligróso si no filtras bien esa variable y limitas que tipo de archivos y de que rutas se pueden bajar .. Recomendable el método anterior.

// cabecera HTTP que le va a indicar al navegador que tipo de archivo es
// (faltarían algunas más para afinar el tema ..).

// Cabecera HTTp que indica el formato MIME del archivo . en tu caso parece que todos son PDF . .
header("Content-type: application/pdf");
// basename() obtiene el nombre del archivo de una ruta+nombre dado completo.
// Ese será el nombre que se ofrecerá a descargar.
header("Content-disposition: inline; filename=".basename($refr_uri_sist));
// Se envia el tamaño del archivo a descargar (para que tu cliente de descarga sepa cuanto le queda y pueda hacer sus estadísticas de bajada del archivo)
header("Content-length: " filesize($refr_uri_sist));

// leer el archivo desde su ruta absoluta y entregarlo al buffer de salida de PHP
readfile($refr_uri_sist);
?>
Y su uso:
<img src="bajar.php?id_archivo=referencia" >

Con esta misma filosofía podrías validar quien baja el archivo, estadísticas de quien/cuanto se baja (es solicitado) .. etc

Un saludo,

Última edición por Cluster; 20/07/2004 a las 13:51