Mailinglisten-Archive |
Hi Hans,
Jansen schrieb:
> ist es möglich, eine Datei runterzuladen, die nicht vom HTTP-Server (also
> die nicht im Document-Root liegt) freigegeben ist.
>
> Z. B. die Datei /home/ich/test-datei möchte ich runterladen. Die
> Userrechte
> sind mit chmod test-datei o+r gesetzt worden.
>
> Soviel ich weiss müsste das irgendetwas mit Headern sein...
Du willst Header, Du bekommst Header :-)
Diese Variante sollte sowohl im Netscape als
auch im Internet-Explorer mit relativ
grosser Zuverlässigkeit einen Download
erzwingen, der nicht gecached wird.
$filename='/home/ich/test-datei';
if ((file_exists($filename)) && ($fp=fopen($filename,"r")) ) {
if(strIstr(getenv(HTTP_USER_AGENT), "MSIE")) {
header("Content-disposition: filename=".basename($filename));
header("Content-type: application/x-ms-download");
} else {
header("Content-type: x-octet-stream");
header("Content-disposition: attachment;filename=".basename($filename));
header("Content-description: PHP4-Generated Data");
};
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Content-length: ".filesize($filename));
fpassthru($fp);
fclose($fp);
} else {
error_log("Download-Problem: die angegebene Datei $filename konnte nicht
gefunden/geöffnet werden");
header("Location: http://meinserver.tld/fehlerseite.html");
};
Viele Grüße
- johann
php::bar PHP Wiki - Listenarchive