Download

Hola, si tengo una base de datos, en la cual tengo almacenada la ruta de un archivo que esta en el disco duro, como puedo hacer que desde una página web se pueda bajar (hacer un download) el archivo que esta en el disco duro, pero que la ruta la tengo almacenada en la BD.
Gracias por la información.
hozkar.

2 respuestas

Respuesta
1
Por cuestiones de seguridad esta PROHIBIDO que un servidor pueda recorrer el disco rígido de un cliente. Tengo entendido que hay un bug en IE 5.5 que lo permite, pero estamos hablando de una VIOLACIÓN DE SEGURIDAD.
Presta atención a esto:
http://www.guninski.com/webctrl1.html
Pero.. bueno.. supongamos que el archivo esta en EL SERVIDOR, es decir, donde tienes corriendo php, entonces es mucho más simple:
<?php
//Primero abro el archivo y lo leo:
$fd = fopen ($archivo, "rb");
$contents = fread ($fd, filesize ($archivo));
fclose ($fd);
// Luego, le digo al navegador que es un archivo ADJUNTO..
header ( "Expires: Mon, 1 Apr 1974 05:00:00 GMT" );
header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" );
header ( "Cache-Control: no-cache, must-revalidate" );
header ( "Pragma: no-cache" );
header ( "Content-type: application/x-msexcel" );
header ( "Content-Disposition: attachment; filename=$archivo" );
header ( "Content-Description: Archivo excell de mi disco" );
?>
Ten en cuenta: que $archivo contiene la ruta completa del archivo, pero si estas en windows no debes utilizar c:\loquesea\archivos.xxx
sino: c:/loquesea/archivos.xxx
Otra Cosa.. Esto es para archivos .xls, si es de otro tipo deberías cambiar el
Content-type: application/x-msexcel
por lo que fuera.. ¿si?
Bueno... si te quedaron dudas, o no es "exactamente" lo que buscabas.. la seguimos
Saludos
Suerte.
Pablo.
Respuesta
Lo único que te puedo decir es que lo más sencillo seria hacer una consulta a la base de datos y que seleccione el campo donde este guardada el path del download. ¿Por ejemplo si hacemos descargas.php? Id=1, el campo id estará vinculado con el campo "url" donde este el path.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas