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