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

//增
	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 browser
		if( !isset( $_GET['ajax'] ) ) {
			$this->redirect( isset( $_POST['returnUrl'] ) ? $_POST['returnUrl'] : array( 'successcase' ) );
		}
	}
	


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值