Php 如何在yii中以两个dirs保存上传的图像两次?

Php 如何在yii中以两个dirs保存上传的图像两次?,php,file-upload,yii,Php,File Upload,Yii,我想为两个变量分配一个文件字段输入,然后我想将这两个变量保存到两个不同的目录中,下面是我的代码: 控制器: if(isset($_POST['Articles'])) { $model->attributes=$_POST['Articles']; $model->date = date('Y-m-d H:i:s'); $model->disp

我想为两个变量分配一个文件字段输入,然后我想将这两个变量保存到两个不同的目录中,下面是我的代码:

控制器:

if(isset($_POST['Articles']))
        {
            $model->attributes=$_POST['Articles'];
                        $model->date = date('Y-m-d H:i:s');
                        $model->display = 1;
                        $model->visits = 0;
                        $model->image = CUploadedFile::getInstance($model, 'image');
                        $model->thumbnail = CUploadedFile::getInstance($model, 'image');
            if($model->save()){

                            if(!empty($model->image)){

                                $model->image->saveAs(getcwd()."/images/articles/".$model->image);
                                if(!empty($model->thumbnail))
                                if(!$model->thumbnail->saveAs(getcwd()."\images\articles\thumbnails/".$model->thumbnail))
                                $thumbnail = Yii::app()->image->load(getcwd()."/images/articles/thumbnails/".$model->thumbnail);
                                $thumbnail->resize(64, 64);
                                $thumbnail->save();
                            }

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

保存模型后,缩略图目录仍然为空,并且我从图像扩展中得到一个错误,即没有要加载的文件,因此如何在两个目录中保存此图像两次

您不需要2个映像的2个实例,默认情况下,saveAs会删除临时文件,因此您可以执行以下操作:

if(isset($_POST['Articles']))
    {
        $model->attributes=$_POST['Articles'];
        $model->date = date('Y-m-d H:i:s');
        $model->display = 1;
        $model->visits = 0;
        $model->image = CUploadedFile::getInstance($model, 'image');
        if($model->save()){
            if(!empty($model->image)){
                 $model->image->saveAs(getcwd()."/images/articles/".$model->image,false);//here's a trick
                 if($model->image->saveAs(getcwd()."\images\articles\thumbnails/".$model->image) {
                       $thumbnail = Yii::app()->image->load(getcwd()."/images/articles/thumbnails/".$model->image);
                       $thumbnail->resize(64, 64);
                       $thumbnail->save();
                 }

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

您也可以在不保存图像的情况下执行此操作,然后重新加载-动态执行,例如EUploadedImage。

您不需要两个图像的实例,默认情况下,saveAs会删除临时文件,因此您可以执行以下操作:

if(isset($_POST['Articles']))
    {
        $model->attributes=$_POST['Articles'];
        $model->date = date('Y-m-d H:i:s');
        $model->display = 1;
        $model->visits = 0;
        $model->image = CUploadedFile::getInstance($model, 'image');
        if($model->save()){
            if(!empty($model->image)){
                 $model->image->saveAs(getcwd()."/images/articles/".$model->image,false);//here's a trick
                 if($model->image->saveAs(getcwd()."\images\articles\thumbnails/".$model->image) {
                       $thumbnail = Yii::app()->image->load(getcwd()."/images/articles/thumbnails/".$model->image);
                       $thumbnail->resize(64, 64);
                       $thumbnail->save();
                 }

                 $this->redirect(array('view','id'=>$model->id));
            }
你也可以在不保存图像的情况下进行操作,然后再次加载-例如,在飞行中进行操作