невозможно загрузить файл Excel в codeigniter

У меня есть проект Codeigniter, который может вставлять данные в базу данных, загружая файл Excel и читая его с помощью PHPExcel. Он работает на моем локальном хосте, однако, когда я загрузил его на сервер LAMP, он выдает ошибку Тип файла, который вы пытаетесь загрузить, недопустим. Как я собираюсь решить эту проблему?

РЕДАКТИРОВАТЬ В моем проекте я также загружаю файл изображения ..

 public function uploadConfig(){
    $this->load->library('PHPExcel');  
    $this->load->library('PHPExcel/IOFactory');
    $config['upload_path'] = './csv_uploads/'; 
    $config['allowed_types'] = 'xlsx|csv|xls';
    $config['max_size'] = '10000'; 
    $config['overwrite'] = true;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;

    $this->load->library('upload', $config);
    $this->upload->initialize($config);

    if (!is_dir('csv_uploads'))
    {
        mkdir('./csv_uploads', 0777, true);
    }
    // gif|jpg|jpeg|png
}

Это работает на моем локальном хосте в XAMPP. Однако когда я загрузил его на свой сервер LAMP, он не сработал.


person d_unknown    schedule 30.10.2015    source источник
comment
пожалуйста, добавьте бит кода функции загрузки   -  person Linus    schedule 30.10.2015
comment
попробуйте проверить разрешенный тип MIME $config['allowed_types'] = 'xls'; здесь   -  person Linus    schedule 30.10.2015
comment
@vnpnlz, он работает на моем локальном хосте.   -  person d_unknown    schedule 30.10.2015
comment
Можете ли вы добавить эти строки 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/zip'), в application/config/mimes.php   -  person MuntingInsekto    schedule 30.10.2015
comment
Можете ли вы проверить результат var_dump(print_r($_FILES));, поместите это в контроллер и скажите   -  person Linus    schedule 30.10.2015
comment
@vnpnlz, у меня есть что-то подобное в mime.php .. проблема возникла, когда я загрузил его на сервер, который является LAMP .. но на моем локальном хосте он работает, и я использую XAMPP ..   -  person d_unknown    schedule 30.10.2015
comment
@ AnmolRaghuvanshiVersion1.0, это результат: Array ([files] = ›Array ([name] =› Book1.xlsx [type] = ›application / vnd.openxmlformats-officedocument.spreadsheetml.sheet [tmp_name] = ›/ Tmp / phpIj8rmv [error] =› 0 [size] = ›10618)) boolean true Тип файла, который вы пытаетесь загрузить, недопустим.   -  person d_unknown    schedule 30.10.2015
comment
проверьте файл php.ini с приведенной ниже конфигурацией с помощью; Разрешить ли загрузку файлов по протоколу HTTP. file_uploads = On горит или не горит, возможно, проблема с лампой   -  person Linus    schedule 30.10.2015
comment
@ AnmolRaghuvanshiVersion1.0, он уже включен. И, кстати, файл .xls можно загрузить ... только файлы .csv и .xlsx не могут быть загружены.   -  person d_unknown    schedule 30.10.2015
comment
какую версию codeigniter вы используете и какую ОС?   -  person Linus    schedule 30.10.2015
comment
@ AnmolRaghuvanshiVersion1.0, я использую 2.1.3 и на моем локальном хосте windows 8.1 .. на сервере, лампа под ключ (linux)   -  person d_unknown    schedule 30.10.2015
comment
Давайте продолжим это обсуждение в чате.   -  person Linus    schedule 30.10.2015
comment
Кроме того, вы пытаетесь загрузить файл, размер которого превышает допустимый (10000 ‹10618).   -  person Tpojka    schedule 30.10.2015


Ответы (6)


Для Тип файла, который вы пытаетесь загрузить, не разрешен, эта проблема возникает из-за того, что ваш тип файла неправильный или не соответствует требованиям.

Пожалуйста, примените шаг ниже, чтобы получить свой тип файла.

Вы можете посмотреть строку 199 system / libraries / Upload.php:

$this->_file_mime_type($_FILES[$field]);

Обновите эту строку до:

 $this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die();

Теперь вы можете увидеть свой фактический тип файла, например xlsx, csv, xls или ods.

Теперь вы можете добавить свой тип файла под кодом

$config['allowed_types'] = 'xlsx|csv|xls';

также добавить config/mimes.php

person HEMAL    schedule 30.10.2015
comment
он отображает только строку 'application / vnd.ms-excel' (длина = 24) - person d_unknown; 02.11.2015
comment
перейдите в application / config / mimes.php и примените указанные ниже изменения 'xls' = ›array ('application / excel', 'application / vnd.ms-excel', 'application / msexcel') к массиву ('application / excel ',' приложение / vnd.ms-excel ',' приложение / октет-поток '), - person HEMAL; 02.11.2015
comment
Спасибо за помощь. Я заметил, что мне нужно просто добавить строку, отображаемую в mimes.php, которая соответствует расширению загружаемого файла .. - person d_unknown; 02.11.2015

Codeigniter 3

добавьте в свой config / mimes.php типы 'application / octet-stream'

'xlsx'  =>  array('application/octet-stream','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip')

тогда это будет работать

person Vitor Novo    schedule 19.04.2017

Перейдите к config/mimes.php -> строки № 32 (xls) -> добавьте 'application/vnd.ms-office' в существующий массив.

'xls'   =>  array('application/excel', 'application/vnd.ms-excel', 'application/msexcel', **'application/vnd.ms-office'**)

Это работает только для xls, для любого другого типа получить тип mime и добавить в этот массив.

person Anup    schedule 23.09.2017

Если вы используете liberOffice или Open Office, вы столкнетесь с этой проблемой. добавьте тип "application / octet-stream" в 'xlsx' в ваш application / config / mimes.php

'xlsx'  =>  array('application/octet-stream','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip')
person Ashutosh Niranjan    schedule 13.11.2019

В ваш код

$config['allowed_types'] = 'xlsx|csv|xls';

Но в U buntu он сохраняет типы файлов в формате ods. Так что он никогда не позволит загружать. добавить это

$config['allowed_types'] = 'xlsx|csv|xls|ods';

И в config/mimes.php

Добавь это

'ods'   =>  array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'),

Обеспечьте проникновение для записи в папку

sudo chown apache:apache -R /var/www/html

и в php.ini

  1. Убедитесь, что file_upload включен
  2. и установите флажок максимальный лимит загрузки.
  3. а также проверьте максимальное время выполнения
person Abdulla Nilam    schedule 30.10.2015
comment
@d_unknown проверьте это - person Abdulla Nilam; 30.10.2015
comment
Я проверил php.ini, добавил ods в mimes.php и allowed_type ods .. но он все равно не работал .. - person d_unknown; 02.11.2015
comment
Я могу загрузить файл .xls, но не .xlsx и .csv. - person d_unknown; 02.11.2015

В вашем коде добавьте строку ниже

 $config['allowed_types']        = '*';
 $config['detect_mime']          = false;

это параметр конфигурации.

person Raman Kumar    schedule 24.03.2018