No estás registrado (Registrarse)

Vanilla 1.1.10 es un producto de Lussumo. Para más información: Documentación, Soporte.

    •  
      CommentAuthorlbarcelo
    • CommentTimeJun 1st 2010
     # 1
    Me gustaria saber si con HTML es posible que al hacer clic en un enlace a una imagen, por ej:
    <a href="http://www.demene.com/themes/vanilla/styles/default/logo.gif">logo</a>

    En lugar de cargarse la imagen en el navegador, aparezca la opcion para descargar en el ordenador.
    He estado buscando por ahi pero solo he encontrado cosas en php como este pequeño script pero no se si sera muy seguro meter un archivo que permita descargar cosas a diestro y siniestro. ¿Que opinais? :confuso:
    •  
      CommentAuthordominotico
    • CommentTimeJun 1st 2010
     # 2
    No entiendo la pregunta. En la mayoría de las imagenes basta con clicar con el boton derecho y seleccionar la opcion Guardar imagen... :que:
    • CommentAuthorMafiay2k
    • CommentTimeJun 1st 2010
     # 3
    Si pero supongo que lo que quiere es forzar un header tal y como se hace en php pero desde HTML desconozco si se puede hacer ;)Dominios venta
    •  
      CommentAuthorignatius
    • CommentTimeJun 1st 2010 editado
     # 4
    Yo creo que con html no se puede forzar el header. Ahora con PHP es muy sencillo de hacer eso.

    Puedes hacer una mezcla de php y htaccess, de tal forma que las imágenes para las que quieras ofrecer descarga enlacen con urls tipo misitio.com/imagenes/descarga/estaimagen.jpg|png|gif... y que estas urls (y solo estas) sean desviadas o más bien reescritas desde htaccess hacia un script dinámico tipo misitio.com/scriptdescarga.php?archivo=estaimagen.jpg

    El php sería algo así como


    <?

    if($_GET['archivo'])

    {

    $archivo="/mi/ruta/absoluta/a/".$_GET['archivo'];
    if(file_exists($archivo)) {

    //puedes meter todas las comprobaciones adicionales
    //como que efectivamente sea solo una imagen, que esté logueado,
    //control estadístico o contadores de descargas...

    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"".$_GET['archivo']."\"\n");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($archivo));
    $fp=fopen("$archivo", "r");
    fpassthru($fp);

    exit;

    } else {

    echo "Archivo inexistente";
    exit;

    } else {

    Header("Location: /") // Si se intenta acceder directamente al script sin el nombre del archivo por GET, Lo mandas a la página principal o donde quieras o estableces otra secuencia de error...

    }

    ?>


    Esto te permite, por ejemplo, colocar todas las imágenes en una carpeta y que dede el script solo se descarguen archivos que estén en esa carpeta o incluso hacer averiguaciones más complejas.
    •  
      CommentAuthorlbarcelo
    • CommentTimeJun 1st 2010
     # 5
    Muchisimas gracias ignatius, es justo eso lo que andaba buscando. :susurro: