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はfirebugに表示されます。

この問題を修正するにはどうすればよいですか?

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

警告: 私はまったくの 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 に答える