PHP I/O内存流在文档开头创建空行

PHP I/O内存流在文档开头创建空行,php,memory,stream,Php,Memory,Stream,我是php新手,对你们有疑问。 现在,我正在创建一个php脚本,希望在其中使用以下内容: $file = fopen('php://memory','w'); 然后,我使用fputcsv,在这里我添加了几个数组来填充这个文档。 在最后一部分中,我说我要建立downloadeble链接 header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="service.csv"')

我是php新手,对你们有疑问。 现在,我正在创建一个php脚本,希望在其中使用以下内容:

$file = fopen('php://memory','w');
然后,我使用fputcsv,在这里我添加了几个数组来填充这个文档。 在最后一部分中,我说我要建立downloadeble链接

header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="service.csv"');
我的方法如下所示:

public function exportToCsv($Id){
  $file = fopen('php://memory','w');

  $someDetails = $this->some_model->getSomeDetail($Id);

  $details = array(
    array("Subject", "Start Date", "Start Time", "End Date", "End Time", "Where"),
    array("test subject","test date","test time","test end date","etc..."));
  foreach ($details as $detail) {
      fputcsv($file, $detail);
  }
  fseek($file,0);
  header('Content-Type: application/csv');
  header('Content-Disposition: attachment; filename="file.csv"');
  fpassthru($file);}
当我的浏览器下载这个文件并打开它时,一切都很好,但在文件的开头,有一行是空的,我不明白为什么会发生,我如何才能删除这一行

谢谢你的描述

Marek

1)您应该检查PHP标记(
)前是否有任何空行/空格


2) 尝试添加
ob_end_clean()就在您的
fpassthru($file)之前,这将清除缓冲区,您将确保缓冲区中没有任何内容。

php标记前后是否有空格/空行?()不,我使用了CodeIgniter框架,这段代码是在controller中编写的。未找到空行/空格。当我打开创建的文档时,第一行为空,其他行为空。我忘了提到。。所有这些只有在我使用路径时才会发生”php://memory“或输出,。。。当我写像“C:/path/to/folder”这样的路径时,一切都很好,没有创建空行。。。只有“php://memory“在开始处创建空行尝试添加ob_end_clean();就在您的fpassthru($file)之前;多好的建议啊!它起作用了!我想吻你:谢谢没问题,很高兴它成功了!我将重写我的评论作为回答,以便您可以接受:)