2

I'm using below code for upload csv files. It is always saying "invalid file error". How can I fix this issue?

Here is my form:

<form name="bulk_dealer" action="<?= base_url() ?>admin/add_bulk_user" method="post" accept-charset="utf-8"  enctype="multipart/form-data">  
    <ul>  
        <ul>
            <li class="ui-field"><label for="csvfile">Upload dealer id file( *only .csv) :</label></li> 
            <li class="ui-input"><input type="file" name="csvfile" value="" placeholder="" required=""></li>  
            <li><input type="submit" value="Upload" name="Upload" class="ui-submit"></li>  
        </ul>
    </ul>  
</form>

here is my controller

function add_bulk_user() {
    $data['add_bulk_user_errors'] = NULL;
    $data['add_bulk_user_success'] = NULL;       

    if ($this->input->post() !== FALSE) {
        $config_arr = array(
            'upload_path' => './uploads/csv/',
            'allowed_types' => 'text/plain|text/csv|csv',
            'max_size' => '2048',
            'max_width' => '1024',
            'max_height' => '768',
            'encrypt_name' => true,
            'file_name' => 'dealer'
        );

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

        if (!$this->upload->do_upload('csvfile')) {
            $data['add_bulk_user_errors'] = $this->upload->display_errors(); // this isn't working                
        } else {
            $csvfilepath = "uploads/csv/" . $config_arr['file_name'];
            $this->addfromcsv($csvfilepath);
            $data['qs'] = $this->upload->data();
            $row = 1;

            if (($handle = fopen("./uploads/csv/dealer.csv", "r")) !== FALSE) {
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    $num = count($data);
                    $row++;
                    for ($c = 0; $c < $num; $c++) {

                        $this->load->model("login_model");
                        $is_esist = $this->login_model->check_is_exist($data[$c]);
                        if ($is_esist) {

                        } else {
                            $this->login_model->set_login($data[$c], 'dealer@ceat123');
                        }
                    }
                }
                fclose($handle);
            }

            $data['add_bulk_user_success'] = "File Uploaded Successfully";
        }

        $data['main_content'] = 'admin/add';

        $this->load->view('admin_layout', $data);
        redirect('admin/add_bulk_user', 'refresh');
    } else {
        $data['main_content'] = 'admin/add';
        $this->load->view('admin_layout', $data);
    }
}

mimes.php

$mimes = array( 'hqx'   =>  'application/mac-binhex40',
            'cpt'   =>  'application/mac-compactpro',
            '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'),
            'bin'   =>  'application/macbinary',
            'dms'   =>  'application/octet-stream',
            'lha'   =>  'application/octet-stream',
            'lzh'   =>  'application/octet-stream',
            'exe'   =>  array('application/octet-stream', 'application/x-msdownload'),
            'class' =>  'application/octet-stream',
            'psd'   =>  'application/x-photoshop',
            'so'    =>  'application/octet-stream',
            'sea'   =>  'application/octet-stream',
            'dll'   =>  'application/octet-stream',
            'oda'   =>  'application/oda',
            'pdf'   =>  array('application/pdf', 'application/x-download'),
            'ai'    =>  'application/postscript',
            'eps'   =>  'application/postscript',
            'ps'    =>  'application/postscript',
            'smi'   =>  'application/smil',
            'smil'  =>  'application/smil',
            'mif'   =>  'application/vnd.mif',
            'xls'   =>  array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'),
            'ppt'   =>  array('application/powerpoint', 'application/vnd.ms-powerpoint'),
            'wbxml' =>  'application/wbxml',
            'wmlc'  =>  'application/wmlc',
            'dcr'   =>  'application/x-director',
            'dir'   =>  'application/x-director',
            'dxr'   =>  'application/x-director',
            'dvi'   =>  'application/x-dvi',
            'gtar'  =>  'application/x-gtar',
            'gz'    =>  'application/x-gzip',
            'php'   =>  'application/x-httpd-php',
            'php4'  =>  'application/x-httpd-php',
            'php3'  =>  'application/x-httpd-php',
            'phtml' =>  'application/x-httpd-php',
            'phps'  =>  'application/x-httpd-php-source',
            'js'    =>  'application/x-javascript',
            'swf'   =>  'application/x-shockwave-flash',
            'sit'   =>  'application/x-stuffit',
            'tar'   =>  'application/x-tar',
            'tgz'   =>  array('application/x-tar', 'application/x-gzip-compressed'),
            'xhtml' =>  'application/xhtml+xml',
            'xht'   =>  'application/xhtml+xml',
            'zip'   =>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
            'mid'   =>  'audio/midi',
            'midi'  =>  'audio/midi',
            'mpga'  =>  'audio/mpeg',
            'mp2'   =>  'audio/mpeg',
            'mp3'   =>  array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'),
            'aif'   =>  'audio/x-aiff',
            'aiff'  =>  'audio/x-aiff',
            'aifc'  =>  'audio/x-aiff',
            'ram'   =>  'audio/x-pn-realaudio',
            'rm'    =>  'audio/x-pn-realaudio',
            'rpm'   =>  'audio/x-pn-realaudio-plugin',
            'ra'    =>  'audio/x-realaudio',
            'rv'    =>  'video/vnd.rn-realvideo',
            'wav'   =>  array('audio/x-wav', 'audio/wave', 'audio/wav'),
            'bmp'   =>  array('image/bmp', 'image/x-windows-bmp'),
            'gif'   =>  'image/gif',
            'jpeg'  =>  array('image/jpeg', 'image/pjpeg'),
            'jpg'   =>  array('image/jpeg', 'image/pjpeg'),
            'jpe'   =>  array('image/jpeg', 'image/pjpeg'),
            'png'   =>  array('image/png',  'image/x-png'),
            'tiff'  =>  'image/tiff',
            'tif'   =>  'image/tiff',
            'css'   =>  'text/css',
            'html'  =>  'text/html',
            'htm'   =>  'text/html',
            'shtml' =>  'text/html',
            'txt'   =>  'text/plain',
            'text'  =>  'text/plain',
            'log'   =>  array('text/plain', 'text/x-log'),
            'rtx'   =>  'text/richtext',
            'rtf'   =>  'text/rtf',
            'xml'   =>  'text/xml',
            'xsl'   =>  'text/xml',
            'mpeg'  =>  'video/mpeg',
            'mpg'   =>  'video/mpeg',
            'mpe'   =>  'video/mpeg',
            'qt'    =>  'video/quicktime',
            'mov'   =>  'video/quicktime',
            'avi'   =>  'video/x-msvideo',
            'movie' =>  'video/x-sgi-movie',
            'doc'   =>  'application/msword',
            'docx'  =>  array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'),
            'xlsx'  =>  array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'),
            'word'  =>  array('application/msword', 'application/octet-stream'),
            'xl'    =>  'application/excel',
            'eml'   =>  'message/rfc822',
            'json' => array('application/json', 'text/json')
        );
12
  • what is the error you are getting exactly? File is invalid or file type invalid? Commented Jan 28, 2014 at 7:15
  • @kumar_v its saying file type is invalid Commented Jan 28, 2014 at 7:17
  • 2
    print_r($_FILES); to check the type and add in MIME if not listed. Commented Jan 28, 2014 at 7:18
  • Hi, in just give 'allowed_types' => 'csv'. you can see in mimes.php all csv mime type given if you want to add any mime type to csv just add and element to array of csv of mimetypes array Commented Jan 28, 2014 at 7:20
  • add allowed_types=>'*' Commented Jan 28, 2014 at 7:22

6 Answers 6

4
'allowed_types'=> 'csv',

On your root directory go to application -> config -> mimes.php in csv add 'text/plain'

hope this helps you.

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

Comments

2

Try changing the csv element in the config/mimes.php to:

'csv'   =>  array('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'), ...

All I added was text/plain. This did it for me.

Comments

1

if you are using linux, find mime-type using following command
file --mime-type filename

add the mime-type in csv of application > config > mimes.php
It works for me.

Comments

1

my var_dump($_FILES) gives Array ( [userfile] => Array ( [name] => testa.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpI9TwZT [error] => 0 [size] => 232 ) )

works fine on localhost but not online.

Same set of code working same controller in one function and not in another

Comments

0

Replace:

'allowed_types' => 'text/plain|text/csv|csv',

With:

'allowed_types' => 'text/plain|text/anytext|csv|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',

Oh, and WHY are you using a max width and height for a CSV file?

'max_width' => '1024',
'max_height' => '768',

remove them ;)

3 Comments

this also not worked for me.whe i use 'allowed_types' => '*' then its working.
Ok, do the following: Add var_dump($_FILES); just below function add_bulk_user() { and run the page again. Then copy the page source and paste it here. Then we can see what the file mime really is of your file and we could fix it within seconds.
'array (size=1) 'csvfile' => array (size=5) 'name' => string 'dealerhsgdhgshf.csv' (length=19) 'type' => string 'text/csv' (length=8) 'tmp_name' => string '/tmp/phpyFVpgi' (length=14) 'error' => int 0 'size' => int 135' Array ( [add_bulk_user_errors] => The filetype you are attempting to upload is not allowed.
0

change the bellow code it can be working fine

 'allowed_types' => 'text/plain|text/csv|csv',

repalce with

   'allowed_types' => 'text/plain|text|csv|csv',

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.