我正在尝试动态创建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;
}
你有什么建议我做错了吗?
答案 0 :(得分:-1)
这篇文章对我有帮助 Link on stackexchange
也许这行在输出缓冲区中“挂起”,这是在一段时间之前开始的。这样,您可以设置标头而不会出现旧的“已发送标头”错误,但是无论如何刷新缓冲区时,此内容都会发送到浏览器。
代码:
ob_clean();