2012-04-27 97 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 

希望工程....