Загрузка CSV в Codeigniter - PullRequest
       59

Загрузка CSV в Codeigniter

16 голосов
/ 19 января 2011

У кого-нибудь еще были проблемы с загрузкой 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);

    }

}

Я пытался охватить все базы в моих разрешенных типах - может быть, я пропустил одну?Спасибо за любую помощь с этим!

Ответы [ 6 ]

30 голосов
/ 09 сентября 2012

Я заработал, добавив 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')
12 голосов
/ 19 января 2011

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

text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext

Маловероятно, что вы встретите еще одну.

5 голосов
/ 26 февраля 2012

У меня была такая же проблема при загрузке файлов .csv. Я решил это, определив тип MIME с помощью file -I file.csv в OS X Terminal. Он сообщил, что тип mime был «text / plain», поэтому я добавил его в файл config / mimes.php.

3 голосов
/ 10 июня 2015

- Codeigniter 2.2.0 -

Я сделал быструю отладку в библиотеке Загрузка и обнаружил, что иногда один и тот же исходный код, работающий на разных серверах, идентифицирует один и тот же файл CSV с другим типом файла ( то есть Сервер 1 идентифицирует CSV-файл как: application / vnd.ms-excel , но Сервер 2 идентифицирует тот же CSV-файл, что и: text / 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').

0 голосов
/ 02 января 2018

сначала в разрешенных типах просто наберите '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'
 ),
0 голосов
/ 23 июня 2015

Я пробовал много вещей, чтобы загрузить CSV-файл в codeigniter: -

Я добавляю MIME-тип ( application / vnd.ms-excel ) в файл MIME-типа, но проблема заключается в том, что codeigniter принимает только имя файла userfile . если вы установите имя файла userfile, то это сработает.

Я думаю, что может быть другой путь, но я не смог его найти.

...