Buenas tardes,
Tengo el siguiente script que lo utilizo para forzar descargas. Hace unos días, he cambiado de servidor, y ahora, en lugar de descargar el archivo, lo muestra en pantalla (sea el que sea: zip, pdf, exe, etc), lo cual es un error.
Desde ya, muchas gracias.
Código PHP:
<?php
$ruta = "dn/";
$error = false;
$extensiones = array("zip", "pdf", "msi", "exe");
$mime = array("pdf" => "application/pdf", "zip" => "application/zip", "msi" => "application/octet-stream", "exe" => "application/octet-stream");
$archivo = $_GET["archivo"];
$archivotmp = explode(".",$archivo);
$archivoExt = strtolower($archivotmp[count($archivotmp)-1]);
if (strpos($archivo,"/") !== false) { $error = 1; }
if (!in_array($archivoExt, $extensiones)) { $error = 2; }
if ($error === false)
{
header("Content-type: " . $mime[$archivoExt]);
header('Content-Disposition: attachment; filename="'.$archivo.'"');
header("Content-Transfer-Encoding: binary");
$fp = fopen($ruta.$archivo, "r");
fpassthru($fp);
fclose($fp);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Descargas</title>
</head>
<body>
<?php
if($error !== false)
{
echo '<h3>Error</h3><p>Ha ocurrido un error. Puede ser debido a que no tiene autorizacion para descargar ese archivo, o que ese archivo no existe.</p>';
}
?>
</body>
</html>