2016-03-02 2 views
3

Я новичок в php, и у меня есть вопрос о вас. На данный момент я создаю один 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

+2

У вас есть пробел/пустая строка до или после тега php? () – SamyQc

+0

Нет, я использовал структуру CodeIgniter, и этот код записывался в контроллер. Пустая строка/пробел не найдена. Когда я открываю созданный документ, первая строка пуста и другие строки заполняются. И я забыл упоминать .. все это происходит только тогда, когда я использую путь «php: // memory» или output, ... Когда я пишу путь, как «C:/path/to/folder», все в порядке, no пустая строка создается ... только «php: // memory» создает пустую строку в начале – Marek

+1

Попробуйте добавить ob_end_clean(); непосредственно перед вашим fpassthru ($ file); – SamyQc

ответ

1

1) Вы должны проверить, если есть какие-либо пустая строка/пространство перед PHP Метки (<?php ?>)

2) Попробуйте добавить ob_end_clean(); непосредственно перед fpassthru($file);, это очистит буфер и вам Я уверен, что в этом ничего не осталось.

Смежные вопросы