2016-03-02 41 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();,這將清除緩衝區和你將會確定它裏面沒有任何東西。