Tach an alle. Hab da mal wieder ein kleines problem das mich seit Tagen nervt. Ich verwende ob_start("ob_gzhandler") in meiner index.php damit das ganze GZip komprimiert ist. Nun bin ich gerade dabei ein File Manager zu gestalten und bei der Download funktion will ich ja nicht den HTML inhalt mit in den Download schmeissen.
wie ihr seht versuche ich den ganzen vohrigen inhalt zu löschen, nach anschein funktioniert das ganze auch. Allerdings kann ich nix mehr wieder ausgeben. Header wird modifiziert ich seh nach einer weile den Datei Download allerdings ist die datei total leer.
Das ist meine Index.php wie man oben schon sieht versuche ich zu verhindern das leerzeichen vom lesen der config.php mit reinrutschen deswegen lösche ich den inhalt - das funktioniert auch wunderbar nur bei download.php wirds dan kritisch.
Ich hoffe mir kann einer helfen. Danke im vorraus.
PHP-Code:
download.php:
<?php
$thefile = $mn['userdir']."/".$mn['file'];
if($stream = fopen($thefile, "rb")) {
ob_end_clean();
ob_start();
/* echo "test";
funktioniert wenn ich ob_start("ob_gzhandler"); benutze
*/
$type = detect_mime($thefile);
header("Content-Type: " . $type);
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=\"" . $mn['file'] . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($thefile));
while(!feof($stream)) {
echo fread($stream, 1024 * 8);
flush();
}
fclose($stream);
} else {
echo "unable to open (".$thefile.")";
}
exit();
?>
PHP-Code:
index.php:
<?php
error_reporting(E_ALL);
/*-----------------------------
Config
-----------------------------*/
ob_start();
include("config.php");
ob_end_clean();
//Prevents errors if config.php have space inside
/*-----------------------------
GZIP Compression
-----------------------------*/
if($config['gzip'] == true) {
if(isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
} else {
ob_start();
}
} else {
ob_start();
}
} else {
ob_start();
}
session_start();
Ich hoffe mir kann einer helfen. Danke im vorraus.
Kommentar