Загрузка файла PHP с использованием заголовка PHP

#php #csv #header

#php #csv #заголовок

Вопрос:

У меня есть функция, которая в основном по запросу пользователя получает данные из базы данных, экспортирует их в файл csv, а затем автоматически загружает этот файл csv для пользователя. Функция работает так, как я ожидал, однако по какой-то причине, когда файл, который загружается на компьютер пользователя, содержит некоторые случайные данные html. Я не уверен, как это добавляется в файл, поскольку я проверяю файл, который создается на сервере, и в нем нет случайного текста. Ниже приведена функция, которую я использую:

 private function _exporte() 
{
    $file_name = "/path-". date('d-m-Y') .".csv";

    if(file_exists($file_name) == TRUE) 
        unlink($file_name);

    $file = fopen($file_name, 'w') or die ("Can not open file to write");

    $file_vars = array();

    $data = $this->name_model->get_data();

    $headerDisplayed = false;

    foreach($data as $row)
    {
        $file_vars['Code'] = $row['code'];
        $file_vars['Category'] = $row['category'];
        $file_vars['Category ID'] = $row['category_id'];

        if(!$headerDisplayed)
            fputcsv($file, array_keys($file_vars));

        $headerDisplayed = true;

        fputcsv($file, array_values($file_vars));
    }

    if (file_exists($file_name)) 
    {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file_name));
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file_name));
        readfile($file_name);
    }
}
  

Я добавил изображение файла csv для справки. введите описание изображения здесь

Ответ №1:

вы можете использовать функцию, подобную приведенной ниже, для загрузки изображения:

 function getLogo($path_to_your_file)
    {        
      header("Content-Type: image/jpeg");
      return file_get_contents($path_to_your_file);
    }
  

Комментарии:

1. Спасибо за ваше время, однако мне нужно, чтобы все пользователи загружали файл csv, пока он создается в функции экспорта выше, чтобы они могли вносить в него изменения и загружать его обратно.

2. Не работает, он экспортирует только случайные HTML-файлы без фактических данных