2012-01-14 2 views
4
<?php 
class TestController extends CController 
{ 
    public function actionIndex() 
    { 
      $filename = "test.jpg"; 
      $path=Yii::getPathOfAlias('webroot.protected.images') . '/'; 
      $file=$path.$filename; 

      if (file_exists($file)) 
      { 
       $img=getimagesize($file); 
       header('Content-Type: '.$img['mime']); 
       readfile($file); 
       exit; 
      } 
    } 
    public function actionDisplayimg() 
    { 
      echo "<img src='".CController::createUrl('test/')."' />"; 
    } 
} 
?> 

Он не может отображать изображение ни на тест/индекс, ни на test/displayimg. Любая помощь?Отобразить изображение через php-файл с типом контента image Yii

+1

Разработка. Что генерируется? Ошибка? Img прочитал, но неправильно тип mime? Файл не читается? Файл существует в пути '$ file'? «$ Img» obj не является нулевым и действительным экземпляром того, что вы ожидаете? – Kissaki

+0

просто пустая страница .. Ошибка. Но это подтверждается, что если (file_exists ($ file)) истинно – iThink

+0

Ну. * if * выполняется ветка if. Однако, как вы сказали, страница пуста. Если 'file_exists' возвращает false, то if не выполняется. Я не знаком с yii; будет ли он генерировать что-то еще? Или actionIndex все, что сгенерирует? Тогда в противном случае ожидается пустая страница. – Kissaki

ответ

0

хорошо вы можете назвать вид и передать ему некоторые аргументы действия и отобразить их там

, например (не тестировался)

<?php 
class TestController extends CController 
{ 
    public function actionIndex() 
    { 
      $filename = "test.jpg"; 
      $path=Yii::getPathOfAlias('webroot.protected.images') . '/'; 
      $file=$path.$filename; 

      if (file_exists($file)) 
      { 
       $this->render('view',array(
      'filepath'=>$file, 
     )); 
    } 
} 
?> 

и view вы можете сделать что-то

echo CHtml::image(filepath, 'image', array('class' => 'banner')); 
+0

Почему это произошло? –

+0

, потому что кто-то этого не понял, возможно, кто-то должен показать свой ответ ...... –

3

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

public function actionIndex() 
{ 
     $filename = "test.jpg"; 
     $path=Yii::getPathOfAlias('webroot.protected.images') . '/'; 
     $file=$path.$filename; 

     if (file_exists($file)) 
     { 

       $request = Yii::app()->getRequest(); 
       $request->sendFile(basename($file),file_get_contents($file)); 
     } 
Смежные вопросы