下载文件开头的两个空行

时间:2018-06-14 10:04:20

标签: php csv downloadfile

我正在尝试动态创建CSV文件,然后强制浏览器下载它。 创建文件很简单,并且不包含任何空行,我已经检查过了。另一个问题可能是<?php标签,但我之后没有任何空行,我必须有结束标记,因为我的php文件中有HTML代码。这是我的php代码,可以完成所有操作:

    if (count($wiersze) > 0  && isset($file_name_whole) && isset($atrybuty)) {            
        $fh = @fopen($file_name_whole, $atrybuty);
        foreach ($wiersze as $row){
            if (count($row)>1){
                $new_row=array();
                foreach ($row as $k=>$v){                       
                    $new_row[$k] = '"'.$v.'"';
                    $new_row_str=implode(',',$new_row)."\n";
                }
            }
            elseif (count($row)==1 && $row[0][0]=='#'){
                    $new_row_str=$row[0]."\n";
            }
            else
                continue;

            fputs($fh, $new_row_str);
        }
        fclose($fh);
        if (file_exists($file_name_whole)) {
            header('Content-Type: application/csv');
            header('Content-Disposition: attachment; filename="'.basename($file_name_whole).'"');
            header("Content-Length: " . filesize($file_name_whole));
            readfile($file_name_whole);
            exit;
        }

你有什么建议我做错了吗?

1 个答案:

答案 0 :(得分:-1)

这篇文章对我有帮助 Link on stackexchange

  

也许这行在输出缓冲区中“挂起”,这是在一段时间之前开始的。这样,您可以设置标头而不会出现旧的“已发送标头”错误,但是无论如何刷新缓冲区时,此内容都会发送到浏览器。

代码:

ob_clean();