Forzar descarga de imagen con php
Buenos tardes,
Tengo el siguiente código php para forzar la descarga de imágenes en lugar de visualizarlas.
<?php
// verificar archivo
if (!isset($_GET['file']) || empty($_GET['file'])) {
exit();
}
// obtener archivo
$root = "images/";
$file = basename($_GET['file']);
$path = $root.$file;
$type = '';
if (is_file($path)) {
$size = filesize($path);
if (function_exists('mime_content_type')) {
$type = mime_content_type($path);
} else if (function_exists('finfo_file')) {
$info = finfo_open(FILEINFO_MIME);
$type = finfo_file($info, $path);
finfo_close($info);
}
if ($type == '') {
$type = "application/force-download";
}
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $size);
// descargar achivo
readfile($path);
} else {
die("File not exist !!");
}
?>
el archivo lo nombre download.php y el link para descargar dichas imágenes, sería el siguiente: /download.php?file=nombre_de_archivo.jpg
Pues bien, el problema es que en lugar de descargarme el archivo de imagen dado, me descarga directamente el archivo php "download.php".
¿alguien podría echarme una mano? por favor.
Muchas gracias de antemano.
phpninja
Hey,
buenas tardes. He encontrado algo que quizá te puede servir:
header("Content-Type: ".$tipo_mime."");
header("Content-Length: ".$file_size."");
header("Content-Disposition: attachment; filename=".$archivo.");
readfile($file);
los headers creo que te pueden servir. El readfile abre el archivo para que sea descargado.
phpninja
No uses el force-download con el content-type! porque provocará que se descargue el download claro!
gabrieloantunez
Muchísimas gracias por la respuesta.
Al final resulta que el servidor que es Windows, tenía el PHP desactivado. Y finalmente hice la descarga con un código similar pero en ASP.
De todas formas gracias por el aporte, te he hecho invitación a contacto. Cuando necesite soporte para programación de mis trabajos, me pondré en contacto contigo.
Muchas gracias de nuevo.