Hiện tại nếu tôi không cung cấp phần mở rộng cho lớp, nó không cho phép mở rộng. Tôi muốn cho phép tất cả các tiện ích. Có cách nào để làm điều này mà không cần hack lõi?Làm cách nào để lớp tải lên tệp CodeIgniter chấp nhận tất cả tiện ích mở rộng?
Trả lời
Trong CodeIgniter 2, bạn chỉ cần xác định các loại phép như thế này:
$config['allowed_types'] = '*';
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.
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
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.
Mã hóa magento của Alan thế nào? –
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.
Vâng, đó chỉ là ngớ ngẩn! :-) –
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;
}
$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 ...
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ó.
- 1. jquery - Kiểm tra tiện ích mở rộng tệp trước khi tải lên
- 2. Tải tiện ích mở rộng hình ảnh
- 3. Giới hạn việc tải tệp lên một số tiện ích mở rộng tệp
- 4. Tải tiện ích mở rộng tệp mặc định/ưa thích
- 5. Làm cách nào để làm mới/tải lại Tiện ích mở rộng của Chrome?
- 6. Trang nền trong tiện ích mở rộng bật lên- chrome
- 7. Làm cách nào để bật tiện ích mở rộng mbstring trên PHP 5, máy chủ Fedora
- 8. .Tiện ích mở rộng tệp không được biên soạn
- 9. cách xóa tiện ích mở rộng khỏi tên tệp?
- 10. Làm cho Tiện ích mở rộng của Chrome tải xuống tệp
- 11. Tải lên tệp jQuery - cách nhận dạng khi tất cả các tệp đã tải lên
- 12. Tải ImageFormat từ Tiện ích mở rộng Tập tin
- 13. Làm cách nào để tải tiện ích mở rộng của tôi khi khởi động chrome?
- 14. Tiện ích mở rộng GUI - Tài nguyên không tải
- 15. Tiện ích mở rộng của Chrome + Dart
- 16. Làm cách nào để đặt biểu tượng cho tiện ích mở rộng tệp của riêng tôi
- 17. Tiện ích mở rộng xdebug không được tải
- 18. Tiện ích mở rộng PSake?
- 19. Tôi làm cách nào để khởi chạy Chrome bằng tiện ích mở rộng được giải nén?
- 20. Symfony2 & Twig - tiện ích tải lên tệp phụ đề
- 21. Làm cách nào để tải một tệp ngôn ngữ cho tiện ích mở rộng Joomla của bên thứ ba?
- 22. openssl nhận tiện ích mở rộng chứng chỉ
- 23. Tự động tải jQuery và các tiện ích mở rộng
- 24. Nhận các tiện ích mở rộng của một UTType
- 25. Tôi làm cách nào để mở cửa sổ bật lên của tiện ích mở rộng bằng JavaScript?
- 26. Cài đặt Tiện ích mở rộng PostgreSQL cho tất cả các lược đồ
- 27. Làm cách nào để nhận tiện ích mở rộng tệp từ URI cho ứng dụng đường ray
- 28. Làm cách nào để nhận Thông tin Loại tệp dựa trên tiện ích mở rộng? (không phải MIME) trong C#
- 29. Tiện ích mở rộng loại so với loại lớp
- 30. Tiện ích mở rộng Intellisense tùy chỉnh
Hoạt động trong CodeIgniter 3 cũng – moveax