2014-01-15 3 views
4

Я использую CodeIgniter и храню загруженные файлы вне веб-сервера в качестве меры предосторожности, чтобы они или папка загрузки не доступны прямо из браузера и т.д.Подавать изображение вне вебсервера с использованием CodeIgniter

Моя структура как это:

private 
|_application 
|_system 
|_uploads 
public_html 
|_index.php 

Мой вопрос, есть ли функция Codeigniter, подобно CakePHPs sendFile, что я могу использовать, чтобы обслуживать изображения.

Я знаю, что я мог хранить изображения в корневом каталоге веб-сайта и ограничивать типы загрузки изображениями, но я не хочу этого делать.

Я также знаю, что я мог написать сценарий стиля image.php, который принимает путь к файлу и возвращает заголовок изображения, но прежде чем я схожу с этого маршрута, я задавался вопросом, был ли лучший/предопределенный способ сделать это с помощью CodeIgniter специально?

+2

Бен Взгляните на CodeIgniter легендарного [идея Фила осетра] (HTTP: // StackOverflow .com/a/1913743/1725764);) –

+1

Argh! Я знала, что после долгих бесполезных поисковых запросов что-то подобное получится! Приятно видеть, что это исходит от самого Фила! Благодаря! –

ответ

2

Я предлагаю вам создать контроллер с функцией обработки запросов изображений.

Простой пример:

<?php 
class Img extends CI_Controller { 

    public function jpg($file) 
    { 
      // validate $file here, very important! 
      $path = '../../uploads/' . $file; 
      header('Content-type: image/jpeg'); 
      readfile($path); 
    } 
} 
?> 

Теперь вы можете указать свой IMG SRC, чтобы что-то вроде:

<img src="<?php echo base_url('img/jpg/myimage.jpg') ?>" /> 
+0

Это отличный способ сделать это. Единственная проблема в моем случае состоит в том, что на сайте уже есть изображения в папке общих активов. Однако было бы легко изменить маршрут на частные изображения (например, «p/img/jpg/myimage.jpg» или что-то подобное. Я буду отмечать как ответ, потому что это самое близкое к встроенному методу Codeigniter , –

Смежные вопросы