On 4/25/12 10:54 PM, Brian Dunning wrote:
Hey all - I'm having no luck serving a .dmg from my online store. I stripped
down the code to just the following to debug, but no matter what I get a
zero-byte file served:
header('Content-Type: application/x-apple-diskimage'); // also tried
octet-stream
header('Content-Disposition: attachment; filename="My Cool Image.dmg"');
$size = filesize('/var/www/mypath/My Cool Image.dmg');
header('Content-Length: '.$size);
readfile('/var/www/mypath/My Cool Image.dmg');
This same code works for a number of other file types that I serve: bin, zip,
pdf. Any suggestions? Professor Google is not my friend.
Most likely your file is larger than the memory you have available to
PHP. The readfile() command will load the whole file into memory before
streaming it out.
You'll want to use fopen, fread, fwrite, and fclose to loop through
bytes in your file as you shuttle chunks to the client instead of
slooping it all into memory in one hunk.
-- Dante
D. Dante Lorenso
da...@lorenso.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php