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...

La FAQ Enlaces con descargas en HTML tiene

Pertenece a la categoría:

Pregunta
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?


Respuesta de Cristian Avila Montalvo
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



<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>";

}


Espero que te sirva.
Saludos.

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo