Ошибка при принудительной загрузке файла CSV в CodeigniterPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка при принудительной загрузке файла CSV в Codeigniter

Сообщение Anonymous »

Вот в чем проблема
Я хотел преобразовать свои данные в формат csv и загрузить их. все в порядке, пока в файле CSV, который я скачал, не появится небольшая ошибка, из-за которой в первой строке файла будет пробел.

например
Перед принудительной загрузкой


"имя" ,"возраст",

"Брэд Пит","40",`


После принудительной загрузки

"имя","возраст",

"Брэд Пит","40",


CSV-файл, который я скачал и пытаюсь открыть в Excel, будет выглядеть так

"имя" |возраст

Брэд Пит|40

Я думаю, это из-за скачанного мной CSV-файла в первой строке данных появилась внешняя пробельная строка. .

Вот код

//запись данных в формате CSV
$data = $ this->dbutil->csv_from_result($query, $delimiter);
//создаем случайное имя файла
$name = rand().'_salesperson_data_'.date('d-m-y').' .csv';

if ( ! write_file('./csv/'.$name, $data))
{
echo 'Невозможно записать файл CSV';
}
else
{
//выполняем загрузку
$file = file_get_contents("./csv/".$name); // Прочитаем содержимое файла
$filename = 'salesperson_data_'.date('d-m-y').'.csv';
Force_download($filename, $file);
}

источник Force_download()

if ( ! function_exists('force_download' ))
{
function Force_download($filename = '', $data = '')
{

if ($filename == '' OR $data == '')
{
return FALSE;
}

// Пытаемся определить, содержит ли имя файла расширение файла.
// Мы он нужен для установки типа MIME
if (FALSE === strpos($filename, '.'))
{
return FALSE;

// Захватываем расширение файла
$x = взрыв('.', $filename);
$extension = end($x);

// Загрузите типы mime
@include(APPPATH.'config/mimes'.EXT);

// Устанавливаем mime по умолчанию, если мы не можем его найти
if ( ! isset($mimes[$extension]))
{
$mime = 'application/octet-stream';
}
else
{
$ mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];

// Генерируем заголовки сервера
if (strstr($_SERVER['HTTP_USER_AGENT') ], "MSIE"))
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: Attachment; filename=" '.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header("Content-Transfer-Encoding:binary");
header('Pragma: public');
header("Content-Length: ".strlen($data) );
else
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: Attachment; filename="'.$filename.'"');
header("Кодировка-передачи-контента: двоичный");
header('Expires: 0');
header; ('Pragma: no-cache');
header("Content-Length: ".strlen($data));

exit($data);


Я думал, что TRIM будет для меня последним решением, и я стараюсь использовать его там, где это возможно, но он все тот же . Я не смог найти решения этой проблемы. Пожалуйста, помогите. это задержало меня уже на 2 дня.

Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/604 ... v-file-bug
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»