CodeIgniter “The filetype you are attempting to upload is not allowed.”

匿名 (未验证) 提交于 2019-12-03 09:06:55

问题:

I was searching a lot and found many questions regarding this problem, unfortunately none of answers did help me.

I'm trying to upload a png image, and I'm receiving the following error:

The filetype you are attempting to upload is not allowed.

I was following this CI guide to build my code: http://codeigniter.com/user_guide/libraries/file_uploading.html

Here is what I got:

view file:

[..]    = form_open_multipart() ?>    

= form_close() ?> [..]

My controller:

    $config['upload_path']   = './uploads/';     $config['allowed_types'] = 'gif|jpg|png';     $config['max_size']      = '100';     $config['max_width']     = '1024';     $config['max_height']    = '768';           $this->load->library('upload', $config);          $xx = array('upload_data' => $this->upload->data());         $mimetype= $xx['upload_data']['file_type'];          var_dump('Mime: ' . $mimetype);         var_dump($_FILES);          if ( !$this->upload->do_upload())         {             Notice::add($this->upload->display_errors(), 'error');         }         else         {             $data['upload_data'] = $this->upload->data();         } 

As you can see I'm tryin to var_dump the mime type and result is empty.

When I do var_dump($_FILES) it looks like everything is fine:

array(1) { ["userfile"]=> array(5) { ["name"]=> string(14) "imageofm.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(18) "/var/tmp/php5cDAZJ" ["error"]=> int(0) ["size"]=> int(358) } } 

Also, I got 'png' => array('image/png', 'image/x-png'), line, in my config/mimes.php.

However, it does happend for all images (haven't tried yet other extensions).

I'd appreciate every help attempt.

回答1:

Just edit the mimes.php file in application/config/mimes.php and replace the line for the csv by this one:

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


回答2:

Add ‘text/plain’ to the CSV array in config/mimes.php to $mimes arrays



回答3:

Replacing the codeigniter 2.1.0 system/libraries/upload.php with 2.1.2 version upload.php library solves the problem. Hope this helps



回答4:

$this->load->library('upload');    $this->upload->set_allowed_types('*');    class MY_Upload extends CI_Upload {        function is_allowed_filetype() {            if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types))           {               $this->set_error('upload_no_file_types');               return FALSE;           }            if (in_array("*", $this->allowed_types))           {               return TRUE;           }            $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe');            foreach ($this->allowed_types as $val)           {               $mime = $this->mimes_types(strtolower($val));                // Images get some additional checks               if (in_array($val, $image_types))               {                   if (getimagesize($this->file_temp) === FALSE)                   {                       return FALSE;                   }               }                if (is_array($mime))               {                   if (in_array($this->file_type, $mime, TRUE))                   {                       return TRUE;                   }               }               else               {                   if ($mime == $this->file_type)                   {                       return TRUE;                   }               }           }            return FALSE;        }    }   


回答5:

another solution is to enable extension=php_fileinfo.dll in php.ini



回答6:

i just add this line in mime.php on line 34 and pptx is now uploading. test it on real server

'pptx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'),



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!