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

答えて

2

protectedフォルダが何らかの理由で保護されています - あなたがあなたの写真にアクセスしたい場合は、誰もがそれを

にアクセスすることはできませんがpublicフォルダ(またはpublic/uploaded)に移動し

ここprotected

deny from all 
ため .htaccessコンテンツがあります

EDIT:

もちろん、あなたのユーザーのためにいくつかのACLが必要な場合は、保護されたフォルダにファイルを置くことができます(またはuploadedフォルダにもアクセスできないようにしてください)。

ビュー:

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

外部のアクセス可能なフォルダに画像を保存する方法を教えてください。 – designersvsoft

+1

'Yii :: app() - > getBasePath()'の代わりに 'Yii :: getPathOfAlias( 'webroot')'を使用してください。 – Puigcerber

0

警告:お使いのコントローラやクラスで

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

私は、トータルのYiiのnoobので、私は同様のアプローチをとった塩:) の穀物/ 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 

ので、これは助けられ

関連する問題