Вот в чем проблема
Я хотел преобразовать свои данные в формат 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
Ошибка при принудительной загрузке файла CSV в Codeigniter ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение