Yii上传文件(头像)的一个例子(后端处理)

来源:互联网 发布:阿里云站点监控异常 编辑:程序博客网 时间:2024/04/27 20:29
//增public function actionCreate(){$objModel = new WebsiteInformation;// Uncomment the following line if AJAX validation is needed// $this->performAjaxValidation($model);if( isset( $_POST['WebsiteInformation'] ) ) {$objModel->attributes = $_POST['WebsiteInformation'];$objModel->UpdateDate = time();$objModel->CreateDate = time();if ( $objModel->Content ){//识别出Content内容(由于CKedit保存时是data/base64数据流)中的base64数据流图片//将图片base图片还原,保存在服务器中,替换原来的Contentbase64数据流图片为还原的图片所在的路径$xstr = $this->replaceimg( $objModel->Content, null );$objModel->Content = $xstr;}//准备上传缩略图工作$file = CUploadedFile::getInstance( $objModel,'ThumbPic' );   //获得一个CUploadedFile的实例//根据优先级(新上传的缩略图->原来的缩略图->文章中第一张图片->默认图片)获取上传路径$this->getUploadUrl( $objModel, $file );//保存数据并上传图片文件到ThumbUrl文件夹中if( $objModel->save() ){//数据库数据保存成功后再上传图片到指定文件夹中if( is_object( $file ) && get_class( $file ) === 'CUploadedFile' ){$boolUpLoad=$file->saveAs( Yii::app()->basePath. '/../' .$objModel->ThumbPicUrl );    // 上传图片if( !$boolUpLoad ){throw new CHttpException( 502, '数据已保存,但图片上传失败!' );}}$this->redirect( array( 'index' ));}}$this->render('create', array('model' => $objModel,));}//改public function actionUpdate( $id ) {$objModel = $this->loadModel( $id );// Uncomment the following line if AJAX validation is needed// $this->performAjaxValidation($model);$oldThumbPicUrl = $objModel->ThumbPicUrl;if( isset( $_POST['WebsiteInformation'] ) ) {$objModel->attributes = $_POST['WebsiteInformation'];$objModel->UpdateDate = time();if ( $objModel->Content ){//识别出Content内容(由于CKedit保存时是data/base64数据流)中的base64数据流图片//将图片base图片还原,保存在服务器中,替换原来的Contentbase64数据流图片为还原的图片所在的路径$xstr=$this->replaceimg( $objModel->Content, null );$objModel->Content = $xstr;}//准备上传图片工作$file = CUploadedFile::getInstance($objModel,'ThumbPic');   //获得一个CUploadedFile的实例//根据优先级(新上传的缩略图->原来的缩略图->文章中第一张图片->默认图片)获取上传路径$this->getUploadUrl( $objModel, $file, $oldThumbPicUrl );    //保存数据并上传图片文件到ThumbUrl文件夹中            if( $objModel->save() ){                if( is_object( $file ) && get_class( $file ) === 'CUploadedFile' ){                    $boolUpLoad = $file->saveAs( Yii::app()->basePath. '/../' .$objModel->ThumbPicUrl );    // 上传图片                 //成功上传图片后把原来的图片删除                if ( $boolUpLoad ){                $boolUnlink = false;                //原来的图片存在并且不是系统默认图片upfile/article/thumbpic/noPic.jpg,则删除                $oldThumbFile = substr( $oldThumbPicUrl, 1 );                    if( is_file( $oldThumbFile ) && ( $oldThumbFile != 'upfile/article/thumbpic/noPic.jpg' ) ){                    //只有在thumb文件夹(上传的缩略图)才能删除                    if ( substr( $oldThumbFile, 0,24 ) == 'upfile/article/thumbpic/' ){                    $boolUnlink = unlink( $oldThumbFile );                    if ( !$boolUnlink ){                    throw new CHttpException( 502, "数据已修改成功,但原来的图片 {$oldThumbPicUrl} 不存在或无法(无权限)删除图片,请手动删除!" );                    }                    }                    }//数据上传成功后但图片保存失败则给予相应的提示信息                }else {                throw new CHttpException( 502, '数据已保存,但图片上传失败!' );                }                    }              $this->redirect( array( 'index' ));             }  }$this->render( 'update', array( 'model' => $objModel ) );}//删public function actionDelete( $id ) {$objModel = $this->loadModel( $id );if( !empty($objModel) ) {//先删除图片$thumbPicUrl = $objModel->ThumbPicUrl;$boolUnlink = false;$thumbFile = substr( $thumbPicUrl, 1 );//原来的图片存在并且不是系统默认图片upfile/article/thumbpic/noPic.jpg,则删除if( is_file( $thumbFile )  && ( $thumbFile != 'upfile/article/thumbpic/noPic.jpg' ) ){//只有在thumb文件夹(上传的缩略图)才能删除if ( substr( $thumbFile, 0, 24 ) == 'upfile/article/thumbpic/' ){$boolUnlink = unlink( $thumbFile );if ( !$boolUnlink ){throw new CHttpException(502,"数据已删除,但图片 {$thumbPicUrl} 不存在或无法(无权限)删除图片,请手动删除!");}}}//再删除数据库数据$objModel->delete();}// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browserif( !isset( $_GET['ajax'] ) ) {$this->redirect( isset( $_POST['returnUrl'] ) ? $_POST['returnUrl'] : array( 'successcase' ) );}}


0 0
原创粉丝点击