Bienvenid@s, hoy vamos a ver un ejemplo de como forzar la descarga de archivos a través de cabeceras HTTP, precisamente la descarga de imágenes con extensión jpg|png|gif , en el switch como default se incluye application/force-download, que va a permitir descargar cualquier archivo, no es aconsejable si lo que quieres permitir es la descarga de un tipo o tipos de archivos en concreto, ya que con force-download podrías descargar por ejemplo un .exe u otro cualquier archivo que se te antoje.
En definitivo aquí os dejo el código de ejemplo para que lo amolden a sus necesidades ...
/*Forzar descarga de archivos*/
/*Ruta de la imagen*/
$ruta = 'php-o.png';
/*Información de la imagen para obtener la extensión*/
$info = pathinfo($ruta);
/* Obtener la extensión */
$ext = strtolower($info["extension"]);
switch($ext)
{
case 'png':
$tipo = 'image/png';
break;
case 'jpg':
$tipo = 'image/jpg';
break;
case 'gif':
$tipo = 'image/gif';
break;
default:
/* Para descargar cualquier tipo de archivo
si quieres que se descarguen sólo imágenes
quita esta parte de aquí */
$tipo = 'application/force-download';
break;
}
$size = filesize($ruta);
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); /*Para algunos navegadores*/
header('Cache-Control: private', false); /*Para algunos navegadores*/
header('content-type: '.$tipo.'');
header('content-disposition: attachment; filename="'.basename($ruta).'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$size);
readfile($ruta);
No hay comentarios:
Publicar un comentario