如何使用Yii获取上传图像的文件类型和大小

时间:2013-08-27 19:15:21

标签: php templates file-upload yii yii-cmodel

我遇到Yii的问题:

我有一个名为Slider.php的模型和一个名为SliderController.php的控制器。

我写了这段代码让用户上传图片:

public function actionCreate()
{
    $model=new Slider;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);



    if(isset($_POST['Slider']))
    {
        $model->attributes=$_POST['Slider'];
        $model->image=CUploadedFile::getInstance($model, 'image');
        if($model->save()) {
            if(strlen($model->image)>0)
            {
                $model->image->saveAs(Yii::app()->basePath.'/../uploads/slider/'.$model->image);
            }


            $this->redirect(array('view','id'=>$model->id));
        }
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}

它工作正常。

我的问题是:如何在视图中获取/返回文件类型和大小?

请帮帮我,因为我疯了。

由于

2 个答案:

答案 0 :(得分:1)

CUploadedFile具有您可以使用的sizetype属性。由于信息位于$model->image内,您可以使用

在视图中访问该信息
Size: <?= $model->image->size; ?>
Type: <?= $model->image->type; ?> 

请注意,上述类型是由客户端报告的,因此对于配置错误的客户端(故意或偶然),它将不准确。出于显示目的,这并不重要,但如果您将MIME类型存储在某处以供以后使用,则应在服务器端使用CFileHelper::getMimeType确定它。

答案 1 :(得分:0)

您还可以使用$ model-&gt; image-&gt; getExtensionName()获取扩展名。此方法返回文件扩展名。请查看以下链接中的文档。

http://www.yiiframework.com/doc/api/1.1/CUploadedFile#getExtensionName-detail