我是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\
文件夹中。我试图在编辑图像部分显示上传的图像。但图像无法显示。它在firebug中显示failed to load the given url
。
如何更正此问题?
答案 0 :(得分: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();
}
答案 1 :(得分:0)
警告:我是一个非常棒的人,所以拿这个带一粒盐:) 我采取了类似的方法,但有用户特定的文件夹&amp;添加了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!';
}
}
答案 2 :(得分:0)
<b><?php echo CHtml::encode($data->getAttributeLabel('binaryfile')); ?>:</b>
<?php echo CHtml::image(Yii::app()->request->baseUrl.'/upload/'.$data->fileName); ?>
<br />
filename是您存储在根目录中的上传文件夹中的文件的名称。
(Yii::app()->request->baseUrl.'/upload/' point to your upload folder which is in your root directory
希望它有效......