2016-03-02 37 views
3

我是新来的PHP,我对你有疑问。 现在,我创建一个PHP脚本,我想用这个:PHP I/O内存流在文档开头创建空行

$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);} 

当我的浏览器下载该文件,当我打开它,一切都很好,但在文件开头,有一条空行,我不明白它为什么会发生,我怎样才能删除这条线。

感谢您的描述。

马立克

+2

在php标签之前或之后是否有任何空格/空行? () – SamyQc

+0

不,我使用CodeIgniter框架,并且此代码被写入控制器中。未找到空行/空格。当我打开创建的文档时,第一行为空白,其他行填充。 我忘了提及..只有当我使用路径“php:// memory”或输出时,所有这些happend ... 当我写道如“C:/路径/到/文件夹”一切都很好,没有空白行被创建......只有“php:// memory”在开头创建空行 – Marek

+1

尝试添加ob_end_clean();就在你的fpassthru($文件)之前; – SamyQc

回答

1

1)您应检查是否有任何空白行/空间之前,PHP的标签(<?php ?>

2)尝试只是你fpassthru($file);之前添加ob_end_clean();,这将清除缓冲区和你将会确定它里面没有任何东西。