ugrás a tartalomhoz

8MB-nál nagyobb fájl letöltése PHP-ben

joe123 · 2007. Jún. 23. (Szo), 15.06
Sziasztok!

Tudna valaki segíteni olyan "szájbarágósan"?

Íme egy kódrészlet amit az oldalamon a download.php-ben található.

case 1 : header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="test.txt"');
print get_access_file( "vedeni/test.txt" );
break;

A problémám az, hogy nem tudom elérni, hogy 8MB-nál nagyobb fájlokat le tudjon tölteni az user.
Pontosan meg tudná írni valaki mit is kell módosítanom a kódban ez alapján?

Idézet egy másik fórumról:
Megtaláltam a választ, hátha valakit érdekel, becopyzom:
For download the big files (more than 8MB), you must used ob_flush() because the function flush empty the Apache memory and not PHP memory.
And the max size of PHP memory is 8MB, but ob_flush is able to empty the PHP memory.

header('Content-Type: application/force-download');
header ("Content-Length: " . filesize($file));
header ("Content-Disposition: attachment; filename=$theFileName");

$fd = fopen($file, "r");
while(!feof($fd))
{
echo fread($fd, 4096);
ob_flush();

}


Ha valaki megírná pontosan mit hova írjak, mit cseréljek ki, mivel egészítsem ki a kódot, hogy működjön a dolog stb. azt nagyon szépen megköszönném. Esetleg ha valaki leírná a módosított kódott az még jobb lenne.

A fájl adatai ami a "test.txt" helyett lenne:
Fájl: "film.avi", helye: "vedeni/film.avi", hossza 19 886 080 bájt.

Nagyon köszönök minden segítséget előre is.
 
1

a példakódot próbáltad?

zila · 2007. Jún. 23. (Szo), 15.16
A példakódot nem próbáltad ki?

$file ="vedeni/film.avi";
$theFileName = "film.avi";

header('Content-Type: application/force-download');
header ("Content-Length: " . filesize($file));
header ("Content-Disposition: attachment; filename=$theFileName");

$fd = fopen($file, "r");
while(!feof($fd))
{
echo fread($fd, 4096);
ob_flush();

}
2

Megpróbálom még egyszer...

joe123 · 2007. Jún. 23. (Szo), 15.23
Szia!

Próbáltam én mindenhogy, de mégegyszer megnézem, mert nem vagyok egy nagy mágus :)
Például az sem volt teljesen világos,hogy a
$file ="vedeni/film.avi";
$theFileName = "film.avi";

Nagyon szépen köszönöm, mindjárt megnézem így...
3

Nagyon szépen köszönöm

joe123 · 2007. Jún. 23. (Szo), 15.33
Kedves Zila!

Nagyon, nagyon szépen köszönöm a segítségedet. Így tényleg működik. Látod ennyire nem értek hozzá...
Ez hiányzott az elejéről:
$file ="vedeni/film.avi";
$theFileName = "film.avi";

Köszönöm mégegyszer.