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

vhipe2zx  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(164)

我对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,
    ));
}

而且效果很好。
我的问题是:如何在视图中获取/返回文件类型和大小?

c6ubokkw

c6ubokkw1#

CUploadedFile具有sizetype属性,您可以使用这些属性。

Size: <?= $model->image->size; ?>
Type: <?= $model->image->type; ?>

注意上面的类型是由客户端报告的,因此如果客户端配置错误(无论是故意还是意外),它将不准确。对于显示目的来说,这并不重要,但是如果您要将MIME类型存储在某个地方以备将来使用,则应该在服务器端使用CFileHelper::getMimeType来确定它。

kq0g1dla

kq0g1dla2#

你也可以使用$model-〉image-〉getExtensionName()来获得扩展名。这个方法返回文件扩展名。请查看下面链接中的文档。
http://www.yiiframework.com/doc/api/1.1/CUploadedFile#getExtensionName-detail

相关问题