Upload xls or xlsx files with codeigniter, mime-type error

后端 未结 4 1345
我寻月下人不归
我寻月下人不归 2020-12-03 15:20

Well, i believe this is not a Codeigniter problem per se as it is more of a mime-type.

I\'m trying to upload a file, a xls (or xlsx) file a

相关标签:
4条回答
  • 2020-12-03 15:47

    I'm getting this error also.

    CI is reporting a file type of 'application/zip' which makes sense as the xlsx format is a compressed format (rename it to zip and you can open the contents).

    I have added/replaced the following line to the mime types file (application/config/mimes.php):

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

    and that works (for this browser at least!)

    0 讨论(0)
  • 2020-12-03 15:49

    Just for the records, I found the cause, mime-type was missing on the windows registry, solved adding these keys with a .reg file:

    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USER\Software\Classes\.xls]
    "Content Type"="application/excel"
    
    [HKEY_CURRENT_USER\Software\Classes\.xlsx]
    "Content Type"="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    

    But would rather use the solutions above, I don't like to mess with the registry.

    0 讨论(0)
  • 2020-12-03 15:57

    Please, go through the following Description and the hint and get the Answer easily!

    Description:

    Actually as many ones have advised to add/replace the following line in the file (application/config/mimes.php):

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


    But I have realized that in CodeIgniter Version 2.2.* the issue is little bit different! They have added that line already, but forgot to add the following "file_type" ==> 'application/vnd.ms-excel'

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

    So adding the above 'application/vnd.ms-excel' into the array of xlsx file type, let me upload the .xlsx files!

    Hint:

    Whenever you get the following error, on CodeIgniter Platform, and uploading files:

    The filetype you are attempting to upload is not allowed.

    Do the following in your Controller's upload method,

    var_dump($this->upload->data());
    

    And it will give you a huge array which you can get an idea from this link.(Please, see the end of that page). In that array you can get what's the real mime_type of the file you are trying to upload but not giving you to upload.

    Answer:

    In my case, my file extension was, .xlsx , and the mime type was application/vnd.ms-excel , which was not added into the

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

    So I added it manually, and after that it works VERRY WELL!!!

    Same thing happened to uploading CSV once again, when I checked the file extension is .csv but the mime type was text/plain, when I added it to the following line:

    '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');
    

    and saved as follows,

    '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'),
    

    It works like a charm! :D Try it, if you find something new within the above steps, please comment here!!! So, hoping this will be helpful to all of the CodeIgniter community, I posted it taking some time!

    Best Regards guys,

    Randika

    0 讨论(0)
  • 2020-12-03 16:12

    This was a CI bug a few months ago: https://github.com/EllisLab/CodeIgniter/issues/394 . mimes.php in the framework was updated and the bug was resolved. Update your CodeIgniter library to 2.1.0 (or newer).

    Also a good thing to test/dump are your server mime types.

    Another alternative is forcing the mime type. With .htaccess, that would be

    AddType application/excel .xls .xlsx
    

    For a whole debugging adventure, test various office files with get_mime_by_extension($file) with the File Helper (http://codeigniter.com/user_guide/helpers/file_helper.html)

    0 讨论(0)
提交回复
热议问题