2012-04-27 94 views
0

我是PHP和yii的新手。我在表单中有一个文件字段来上传图片。我使用以下代码使用文件字段上传图像。显示上传的图片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

我该如何解决这个问题?

+0

所以这帮助?问你的问题,如果有什么不清楚你 – llamerr 2012-04-28 11:16:34

回答

2

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

如果您要访问您的照片将它们移动到public文件夹(或public/uploaded

这里是protected

deny from all 
.htaccess内容

EDIT:

当然,你可以把你的文件到受保护的文件夹(或使uploaded文件夹不能访问过),如果你想要一些ACL为您的用户,然后检查访问,通过脚本读取和输出文件(类)

在观点:

if (Yii::app()->session['user_can_access_files']) { 
    header('Content-Type: image/jpeg'); 
    readfile($_GET['url']); 
} else { 
    Yii::app()->user->loginRequired(); 
} 
+0

我如何保存图像在外部可访问的文件夹? – designersvsoft 2012-04-27 11:31:37

+1

使用'Yii :: getPathOfAlias('webroot')'而不是'Yii :: app() - > getBasePath()'。 – Puigcerber 2012-04-27 11:51:07

0

警告::

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

我总警予小白,所以采取这种W /盐:) 一粒我采取了类似的做法,但具有用户特定的文件夹s &添加了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!'; 
     } 
    } 
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 

希望工程....