2012-04-09 29 views
6

Tôi đã tìm kiếm rất nhiều và tìm thấy nhiều câu hỏi liên quan đến vấn đề này, tiếc là không có câu trả lời nào giúp tôi.CodeIgniter "Loại tệp bạn đang cố gắng tải lên không được phép."

Tôi đang cố gắng để tải lên một hình ảnh png, và tôi nhận được lỗi sau:

The filetype you are attempting to upload is not allowed.

Tôi đã làm theo hướng dẫn CI này để xây dựng mã của tôi: http://codeigniter.com/user_guide/libraries/file_uploading.html

Dưới đây là những gì tôi có:

xem file:

[..] 
    <?= form_open_multipart() ?> 
    <input type="file" name="userfile" size="20" /> 
    <br /><br /> 
    <input type="submit" value="upload" /> 
    <?= form_close() ?> 
[..] 

điều khiển của tôi:

$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(); 
     } 

Như bạn có thể thấy tôi đang cố gắng để var_dump loại mime và kết quả trống.

Khi tôi làm var_dump($_FILES) có vẻ như mọi thứ đều tốt:

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

Ngoài ra, tôi có 'png' => array('image/png', 'image/x-png'), dòng, trong config/mimes.php tôi.

Tuy nhiên, nó thực sự làm hài lòng tất cả hình ảnh (chưa thử các tiện ích mở rộng khác).

Tôi đánh giá cao mọi nỗ lực trợ giúp.

Trả lời

1

Thay thế trình mã hóa 2.1.0 hệ thống/thư viện/upload.php bằng thư viện upload.php 2.1.2 phiên bản giải quyết được sự cố. Hy vọng điều này sẽ giúp

0

giải pháp khác là cho phép extension=php_fileinfo.dll trong php.ini

7

Chỉ cần chỉnh sửa file mimes.php trong application/config/mimes.php và thay thế dòng cho csv của thành viên này một:

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

Có đi 10, chứ không phải kiểu của tôi về tập tin (mp3) nhưng giúp tôi giải quyết vấn đề của tôi –

1
$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; 

    } 

} 
0

tôi chỉ cần thêm dòng này trong mime.php trên dòng 34 và pptx hiện đang tải lên. thử nghiệm nó trên máy chủ thực

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

4

Add 'text/plain' đến các mảng CSV trong config/mimes.php đến $ mimes mảng

+0

Cảm ơn bạn - điều này đã giải quyết được vấn đề của tôi. Vấn đề của tôi liên quan trực tiếp đến tệp CSV, với cùng một thông báo lỗi. –