2009-06-09 25 views

Trả lời

58

Trong CodeIgniter 2, bạn chỉ cần xác định các loại phép như thế này:

$config['allowed_types'] = '*'; 
+0

Hoạt động trong CodeIgniter 3 cũng – moveax

2

Cho đến nay, có vẻ như chỉ có thể thực hiện được thông qua hack.

Tôi đã chèn một return true trên dòng 556 vào hệ thống/thư viện/Upload.php.

+0

Tôi thích tạo thư viện tùy chỉnh hơn chỉnh sửa hệ thống/thư viện/thư mục.Cập nhật lên phiên bản mới trên CI thường có nghĩa là thay thế hệ thống/thư mục cũ (ngoại trừ hệ thống/ứng dụng /) bằng phiên bản mới nhất. CMIIW – andyk

4

Câu trả lời cho câu hỏi trực tiếp của bạn: Không, không có cách nào để làm điều này mà không trọng cốt lõi

Để tin tốt là bạn có thể tránh hack lõi, per the manual

Là một tiền thưởng thêm, CodeIgniter cho phép thư viện của bạn mở rộng các lớp gốc nếu bạn chỉ cần thêm một số chức năng vào một thư viện hiện có. Hoặc bạn thậm chí có thể thay thế các thư viện gốc chỉ bằng cách đặt các phiên bản có tên giống hệt trong thư mục ứng dụng/thư viện của bạn.

Vì vậy, để có một thả thay thế cho thư viện của bạn, bạn có thể sao chép vào thư mục Upload.php

application/libraries 

của bạn, và sau đó thêm logic tùy chỉnh của bạn để mà tập tin Upload.php. Trình kích hoạt mã sẽ bao gồm tệp này thay thế bất cứ khi nào bạn tải thư viện tải lên.

Cách khác, bạn có thể tạo lớp trình tải lên tùy chỉnh của riêng bạn mở rộng lớp gốc và chỉ tinh chỉnh hàm is_allowed_filetype.

application/libraries/MY_Upload.php 
class MY_Upload Extends CI_Upload{ 
    function is_allowed_filetype(){ 
     //my custom code here 
    } 
} 

Bạn sẽ muốn đọc qua the changelog bất cứ khi nào bạn đang nâng cấp, nhưng điều này sẽ cho phép bạn để giữ cho mã của bạn và mã cốt lõi trong vũ trụ riêng biệt.

+0

Mã hóa magento của Alan thế nào? –

4

Những gì tôi làm là:

$ext=preg_replace("/.*\.([^.]+)$/","\\1", $_FILES['userfile']['name']); 
$fileType=$_FILES['userfile']['type']; 
$config['allowed_types'] = $ext.'|'.$fileType; 

Điều đó làm cho tất cả các file trong mỗi cuộc gọi chức năng tự động cho phép.

+3

Vâng, đó chỉ là ngớ ngẩn! :-) –

0

Bạn chỉ cần thay thế tình trạng này:

 if (! $this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype'); 
      return false; 
     } 

Với:

 if (count($this->allowed_types) && !$this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype'); 
      return false; 
     } 
0

$config['allowed_types'] = '*'; Sẽ tải lên bất kỳ định dạng tệp nào như .exe hoặc .jpegs thêm ...

0

nếu tất cả không hoạt động sau đó sắp xếp lại thứ tự loại được phép như vậy trong lần đầu tiên định dạng video

$config['allowed_types'] = 'mp4|jpg|png|' 

Nó sẽ hoạt động trong trường hợp của tôi vì vậy tôi chia sẻ nếu có thể thử nó.

Các vấn đề liên quan