Yii 显示上传的图片

Yii 显示上传的图片,yii,Yii,我是php和yii的新手。我的表单中有一个文件字段用于上传图像。我使用以下代码使用文件字段上传图像 视图中的代码: <?php echo $form->fileField($model,'logo', array('class'=>'input-file')); ?> <img src="<?php echo Yii::app()->request->baseUrl.'/protected/uploads/sitelogo

我是php和yii的新手。我的表单中有一个文件字段用于上传图像。我使用以下代码使用文件字段上传图像

视图中的代码:

<?php echo $form->fileField($model,'logo', array('class'=>'input-file')); ?>
    <img src="<?php 
        echo Yii::app()->request->baseUrl.'/protected/uploads/sitelogo/'.$savedvalues['varLogo']; 
    ?>" width="50" height="50" />
    <?php echo $form->hiddenField($model,'hiddenfile',
            array('value'=>$savedvalues['varLogo'])); ?> 
图像现在可以上传了。我已将上传的图像保存在
protected\uploads\
文件夹中。我试图在编辑图像部分显示上传的图像。但是图像不显示。它显示在firebug中加载给定url失败


如何更正此问题?

受保护的
文件夹由于某种原因受到保护-任何人都无法访问它

如果要访问图片,请将其移动到
public
文件夹(或
public/upload

以下是受保护的
.htaccess
内容

deny from all
编辑:

当然,如果您想为您的用户提供一些ACL,您可以将文件放入受保护的文件夹(或使
上载的
文件夹也不可访问),然后通过脚本检查访问、读取和输出文件(类)

鉴于:

<img src="<?php 
    echo Yii::app()->request->baseUrl.'/image.php?url=protected/uploads/sitelogo/'.$savedvalues['varLogo']; 
?>" width="50" height="50" />

警告:我是一个彻头彻尾的笨蛋,所以拿着这粒盐:) 我采用了类似的方法,但是有用户特定的文件夹&添加了MIME类型检查。 我以类似的方式上载文件,然后在视图中使用以下内容查看它们:

echo '<embed src="/tim_0.5/index.php/files/Getdatafile/' . $modelid . '" width=100% height=400>';

希望它能工作….

如何将图像保存在外部可访问文件夹中?使用
Yii::getPathFalias('webroot')
而不是
Yii::app()->getBasePath()
。这有帮助吗?如果你有什么不清楚的地方,可以问你的问题
if (Yii::app()->session['user_can_access_files']) {
    header('Content-Type: image/jpeg');
    readfile($_GET['url']);
} else {
    Yii::app()->user->loginRequired();
}
echo '<embed src="/tim_0.5/index.php/files/Getdatafile/' . $modelid . '" width=100% height=400>';
public function actionGetdatafile($id)
    {
        $model=$this->loadModel($id);
        $imgpath = $model->user_id . '/' . $model->filename;
        $file=Yii::app()->getBasePath().'/datafiles/'.$imgpath;

        if (file_exists($file))
        {
            $img=getimagesize($file);
            header('Content-Type: '.$img['mime']);
            readfile($file);
            exit;
        } else {
        echo 'File not found!';
        }
    }
<b><?php echo CHtml::encode($data->getAttributeLabel('binaryfile')); ?>:</b>

<?php  echo CHtml::image(Yii::app()->request->baseUrl.'/upload/'.$data->fileName); ?>
<br />
(Yii::app()->request->baseUrl.'/upload/' point to your upload folder which is in your root directory