> Faqs > Enlaces con descargas en HTML

Enlaces con descargas en HTML

Hola amiso tengo un problemita que no puedo resolver ya que mi nivel de html no es alto.

Se trata de enlaces a archivos dentro de la misma web. En estos casos, al hacer clic sobre ellos, generalmente, se abre la ventana de windows que te permite abrir, descargar ó cancelar.

Pues bien, en mi caso, en mi navegador (Explorer 7 sobre Windows XP-sp2), no se abre esa ventana sino que directamente el archivo se abre con el programa correspondiente (Adobe pdf, word, winzip, etc.). En archivos de pequeño tamaño no hay problema, es rápida su apertura, pero en archivos grandes (20 Mb) se abre el programa pero no la información.

Para este caso desearía que apareciera la pantalla de descarga para descargarlo en segundo plano. El usuario final no muy ducho en cuestiones informáticas prefiere esta segunda opción.

¿Sabrías decirme qué podría hacer para que apareciera esta pantalla?

Respuestas

Hola, lo que tú necesitas es forzarle al navegador a mostrarte la ventana de descarga de tu archivo, y paras eso tienes que modigicar los headers de una página que puedes llamarla download_file.php y el link puede ir a esa página con un parámetro al archivo que quieres descargar. Por ejemplo <span class="codigo">
<a href='download\_file.php?file=archivo\_pdf.pdf'>Descargar Archivo </a>

Y es recomendable que todos los archivos que ofreces para la descarga los tengas en una misma carpeta la cual puedes definirla en una variable global, en mi caso le llamaré FILES_PATH, luego en download_file.php puedes hacer:

$file = $_GET['file'];
if(file_exists(FILES_PATH . "/$file")) {
$data = fopen(FILES_PATH . "/$file", "r");
$size = filesize(FILES_PATH . "/$file");
$type= filetype(FILES_PATH . "/$file");
$file_content = fread($data,$size);
header("Content-type: $type");
header("Content-length: $size");
header("Content-Disposition: attachment; filename=$file");
header("Content-Description: PHP Generated Data");
echo $file_content;
} else {
echo "<script languaje='javascript'>
alert('This file was not found. Maybe was deleted or moved manually');
</script>";
} </span> Espero que te sirva. Saludos.

Cristian Avila Montalvo