8MB-nál nagyobb fájl letöltése PHP-ben
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.
■ 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.
a példakódot próbáltad?
Megpróbálom még egyszer...
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...
Nagyon szépen köszönöm
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.