Tengo un par de problemas a la hora de descargar archivos.
El primero es que si utilizo header("Content-Length: ".$size); a la hora de descargar el archivo desde localhost me da el siguiente error al abrirlo: "El archivo tiene un formato desconocido o esta dañado."
y el segundo problema es que cuando intento descargar el archivo desde un servidor al pinchar en el enlace de descarga me aparece una ventana con simbolos extraños y no me descarga el archivo.
Mi código es el siguiente:
Código PHP:
if (!isset($_GET['archi']) || empty($_GET['archi'])) {
exit();
}
$root = "download/";
$file = basename($_GET['archi']);
$path = $root . $file.".zip";
$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";
}
// Definir headers
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=$file.zip");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $size);
// Descargar archivo
readfile($path);
} else {
die("El archivo no existe.");
}