Si, es posible creandote un script tuyo en PHP que genere las cabeceras HTTP adecuadas para indicarle al navegador que el dato que se le va a enviar es para que lo descargue y no para que lo intente interpretar (caso de las imagenes por ejemplo).
Las llamadas para bajar una imagen sería tipo:
bajar_imagen.php?imagen=nose.gif
Y el código (ejemplo) sería algo así:
bajar_imagen.php Código PHP:
<?php
// Indicar formato MIME de la imagen ... debe corresponder con el real.
header("Content-type: image/jpg");
// Componer las cabeceras HTTP para indicar al navegador que lo que se envia es para descargar ...
header("Content-Disposition: attachment; filename=".basename($_GET['imagen']));
// Entregar el archivo (leido) al buffer de salida ... En este caso al navegador .. pero con la información anterior que le indica como debe procesar esos datos que se le envian.
readfile($_GET['imagen']);
?>
más ejemplos y detalles en los comentarios de los usuarios de:
header()
http://www.php.net/manual/en/function.header.php NOTA: Las cabeceras HTTP si bien son "standars" . no todo navegador las interpreta de la misma forma .. así que este ejemplo y similares se pueden comportar de forma distinta en vários navegadores diferentes.
Un saludo,