Вот в чем проблема
Я хотел преобразовать свои данные в формат 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
Кемеровские программисты php общаются здесь
-
Anonymous
1730771000
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 дня.
Заранее спасибо.
Подробнее здесь: [url]https://stackoverflow.com/questions/6045310/codeigniter-force-download-csv-file-bug[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия