Загрузка csv в Codeigniter
У кого-нибудь еще была проблема с загрузкой CSV файла в Codeigniter? Я получаю довольно раздражающий "Тип файла, который вы пытаетесь загрузить, не разрешен". ошибка, хотя я явно задал тип загрузки. Здесь мой код (должен быть довольно стандартным):
function doUpload() {
$config['upload_path'] = 'uploads/';
$config['allowed_types'] = 'text/plain|text/csv|csv';
$config['max_size'] = '5000';
$config['file_name'] = 'upload' . time();
$this->load->library('upload', $config);
if(!$this->upload->do_upload()) echo $this->upload->display_errors();
else {
$file_info = $this->upload->data();
$csvfilepath = "uploads/" . $file_info['file_name'];
$this->addfromcsv($csvfilepath);
}
}
Я пытался охватить все базы в разрешенных типах - возможно, я пропустил один?
Спасибо за любую помощь с этим!
Ответы
Ответ 1
К несчастью, официальной спецификации нет, поэтому их довольно много: самые популярные среди тех, кто отсутствует,
text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext
Вряд ли вы встретите другого.
Ответ 2
Я получил его, добавив cbrandolino предложенные mimetypes в config/mimes.php(отличный совет jljohnstone). Итак, свойство csv моих $mimes выглядит так:
'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel')
Ответ 3
У меня была такая же проблема с загрузкой CSV файлов. Я решил это, установив тип mime, используя file -I file.csv
в терминале OS X. Он сообщил, что тип mime был "text/plain", поэтому я добавил его в файл config/mimes.php.
Ответ 4
- Codeigniter 2.2.0 -
Я быстро отлаживал Загрузить библиотеку, и я обнаружил, что иногда один и тот же исходный код, запущенный на разных серверах, будет идентифицировать тот же файл CSV, имеющий другой тип файла (то есть сервер 1 идентифицирует CSV файл как: application/vnd.ms-excel, но Server 2 идентифицирует тот же файл CSV, что и: текст /xc ).
Мое решение заключалось в том, чтобы добавить в application/config/mimes.php тип файла, который был идентифицирован сервером, где была проблема. Следовательно, мой массив csv из файла mimes.php выглядит так:
'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/x-c')
.
Ответ 5
Я пробовал много чего загрузить файл csv в codeigniter: -
Я добавляю mime-тип (application/vnd.ms-excel) в файл типа mime, но средняя проблема - codeigniter, будет принимать имя файла userfile. если вы зададите файл имени файла, то он будет работать.
Я думаю, что может быть другой способ, но я не могу этого найти.
Ответ 6
сначала в разрешенных типах просто введите "csv"
$config['allowed_types'] = 'csv';
$this->load->library('upload', $config);
второй перейдите в /config/mimes.php
и измените элемент массива "csv" следующим образом:
'csv' => array(
'text/x-comma-separated-values',
'text/comma-separated-values',
'application/octet-stream',
'application/vnd.ms-excel',
'application/x-csv',
'text/x-csv',
'text/csv',
'application/csv',
'application/excel',
'application/vnd.msexcel',
'text/plain'
),