1

I have a Codeigniter project that can insert data into database through uploading an excel file and reading it with PHPExcel. It is working on my localhost however when I uploaded it in a LAMP server, It gives me an error The filetype you are attempting to upload is not allowed. How am I going to solve this?

EDIT In my project, I also have a file image uploading..

 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
}

This works on my localhost in XAMPP. However, when I uploaded it on my LAMP server, it didn't work.

14
  • plz add bit of upload function code Commented Oct 30, 2015 at 2:55
  • Possible duplicate of Codeigniter : The filetype you are attempting to upload is not allowed. Yesterday it was fine Commented Oct 30, 2015 at 3:04
  • try checking allowed mime type $config['allowed_types'] = 'xls'; is there Commented Oct 30, 2015 at 3:05
  • @vnpnlz, it is working on my localhost. Commented Oct 30, 2015 at 3:10
  • can you add this lines 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/zip'), to application/config/mimes.php Commented Oct 30, 2015 at 3:13

6 Answers 6

4

For The file type you are attempting to upload is not allowed this issue occur because of your file type is wrong or not fulfill.

Please apply below step to get your file type.

You can looking at system/libraries/Upload.php line 199:

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

Update that line to:

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

Now you can see your actual file type Like xlsx or csv or xls or ods

Now you can add your file type below code

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

also add in config/mimes.php

Sign up to request clarification or add additional context in comments.

3 Comments

it only displaying string 'application/vnd.ms-excel' (length=24)
go to application/config/mimes.php and apply below changes 'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'), to array('application/excel', 'application/vnd.ms-excel', 'application/octet-stream'),
thank you for your help. I noticed that I should just add the string displayed to mimes.php that corresponds to the file extension to be uploaded..
3

Codeigniter 3

add to your config/mimes.php types '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')

then it will work

Comments

1

Go to config/mimes.php -> lines no 32 (xls) -> add 'application/vnd.ms-office' into existing array.

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

This work only for xls for any other type get the mime type and add into this array.

Comments

0

In your code

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

But in Ubuntu it save file types is ods format. So it will never let allow to upload. add that

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

And in config/mimes.php

add this

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

Provide Permeation to write in the folder

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

and in php.ini

  1. Check file_upload is on
  2. and check max upload limit
  3. as well as check max execution time

3 Comments

@d_unknown check this
I checked the php.ini, added ods to mimes.php and allowed_type ods.. but it still didn't work..
I can actually upload a .xls file.. but not .xlsx and .csv.
0

If you are using liberOffice or Open Office, You will face this problem. add "application/octet-stream" type in 'xlsx' to your 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')

Comments

-1

In Your Code Add Below Line

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

this is configuration setting.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.