Подтвердить что ты не робот

Загрузка 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);

    }

}

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

4b9b3361

Ответ 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'
 ),