Pablo Lopez Jimenez Pablo Lopez Jimenez - 4 months ago 10
PHP Question

I am trying write file with php and download it. Always first line appears in blank and that is wrong

I am generating a file similar to xml.

When I have all string i try write and download it on fly.

The problem begins when I open the file: first line is blank and plain text begins in the second line. I have tested with fwrite, fput, and file_put_contents().... but......

I havn't been able to solve the problem...

This is the piece of code:

function dw($str, $name){
$handle = fopen($name.'.fmt', "w");
fwrite($handle, utf8_encode($str));
fclose($handle);
header('Content-Type: text/xml');
header('Content-Disposition: attachment; filename='.basename($name.'.fmt'));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($name.'.fmt'));
readfile($name.'.fmt');
exit;
}

Answer

I found the solution (perhaps someone needs this answer):

    $handle = fopen($name.'.fmt', "wb");
    rewind($handle);
    fwrite($handle, $new_dom->saveXML());
    fclose($handle);

    header('Content-Description: File Transfer');
    header('Content-Type: text/xml');
    header('Content-Disposition: attachment; filename=' . basename($name.'.fmt'));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($name.'.fmt'));
    ob_clean();
    readfile($name.'.fmt');
Comments