dou*_*ack 0 php csv header download
我正在尝试提供动态生成的csv文件.出于某种原因,当我得到文件时,数据前面有18个空行.我定义的标头和我发送的csv数据之间没有任何空格.如果我将数据写入服务器上的文件,则不会获得这些空行.但是,如果我编写该文件然后尝试将其提供给用户,则返回空行.所以我想知道是否我弄乱了标题,或者是否有另一个问题我没想到:
function generate_csv($source_type, $include_unpublished = FALSE) {
// retrieve data from DB
....
// start up headers
$csv_name = "$source_type-$data_set-csv_" . date('Y-m-d') . '.csv';
header('Content-Type: text/x-comma-separated-values');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browser
header('Content-Disposition: attachment; filename="' . $csv_name . '"');
// send csv data
print $csv_data;
} //end function
Run Code Online (Sandbox Code Playgroud)
免责声明:我在https://drupal.stackexchange.com/questions/27649/extra-empty-rows-when-serving-csv-file上提出了这个问题,但它似乎不是drupal特定的,并且没有'那边有很多想法......
也许这行在输出缓冲区中"挂起",这是在一段时间之前启动的.通过这种方式,您可以设置标头,而不会使用旧的"标头已发送"-error,但无论如何都会在刷新缓冲区时将此内容发送到浏览器.
尝试
ob_clean();
print $csv_data;
Run Code Online (Sandbox Code Playgroud)