0

我是 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'])); ?> 

控制器中的代码:

$randnum = rand(0,100);
$home->varLogo = $randnum.$model->logo;
$file= Yii::app()->getBasePath().'/uploads/sitelogo/'.$randnum.$model->logo;
$model->logo->saveAs($file);    

图片现在上传正常。我已将上传的图像保存在protected\uploads\文件夹中。我正在尝试在编辑图像部分显示上传的图像。但是图像不显示。它显示failed to load the given url在萤火虫中。

我该如何纠正这个问题?

4

3 回答 3

2

protected文件夹由于某种原因受到保护 - 没有人可以访问它

如果您想访问您的图片,请将它们移动到public文件夹(或public/uploaded

这是.htaccess内容protected

deny from all

EDIT:

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

鉴于:

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

在您的控制器或类中:

if (Yii::app()->session['user_can_access_files']) {
    header('Content-Type: image/jpeg');
    readfile($_GET['url']);
} else {
    Yii::app()->user->loginRequired();
}
于 2012-04-27T11:25:08.243 回答
0
<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

希望它有效....

于 2013-08-27T08:47:56.287 回答
0

警告:我是一个完全的 yii 菜鸟,所以拿这个带一点盐 :) 我采取了类似的方法,但有用户特定的文件夹并添加了 MIME 类型检查。我以类似的方式上传文件,然后在视图中查看它们:

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!';
        }
    }
于 2012-05-01T13:39:39.377 回答