M. Sokolewicz wrote:
> Pavel Janda wrote:
>> Hello to everybody,
>>
>> I have this problem with downloading files via PHP. For illustration -
>> I am using this fragment of code:
>>
>> <?php
>>
>>     header("Content-type: $contenttype; name=\"$outputfilename\"");
>>     header("Content-disposition: form-data;
>> filename=\"$outputfilename\"");
>>
>>     $fp=fopen($filename,'r');
>>     while (!FEof($fp)):
>>         $filedata.=fread($fp,8192);
>>     endwhile;
>>     fclose($fp);
>>     echo $filedata;
>>
>> ?>
>>
>> The problem is, that the file on server has 16857 bytes and saved file
>> has 16858. In another case downloaded file has everytime 1 byte more
>> than the original file on server.
>>
>> When I put JPEG or ZIP forexample to output, there is no problem with
>> opening file like this. Bud when I am trying .docx (Office2007 file
>> format) it occures mistake during opening this file in MSOffice...
>>
>> Can anybody helps me with this problem? Why is the file size
>> increasing one byte? Whitch byte it is?
>>
>> Thanks a lot!
>> Pavel
> 
> Probably that whitespace after your last ?>
> What I would recommend is to just leave off the last ?>, it's not
> required and by not adding it you won't see those annoying problems with
> whitespaces causing corrupt data.

I agree.

Also a much simpler way of outputting a file that doesn't use up memory,
is just to replace:

     $fp=fopen($filename,'r');
     while (!FEof($fp)):
         $filedata.=fread($fp,8192);
     endwhile;
     fclose($fp);
     echo $filedata;


With:
     readfile($filename);


http://uk.php.net/manual/en/function.readfile.php

Col.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to