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
- Yii上传文件(头像)的一个例子(后端处理)
- Yii上传文件(头像)详解(一)
- Yii上传文件头像详解(二)
- Yii 上传文件(头像)详解(三)
- 上传头像的处理
- yii 一个简单的文件上传
- ios 头像上传前的头像处理
- 【基于SSH框架的个人博客系统06】头像文件上传与前后端分页机制
- 一个文件上传的例子[转]
- Java关于文件上传的一个例子
- 一个简单的上传文件测试例子
- 一个多文件上传的例子
- 跨域 上传文件 的一个例子
- struts2上传文件的配置(附带一个上传文件的例子)
- Yii内部的文件上传
- Yii的文件上传入库
- 一个使用命令处理文件的例子
- PyPDF2处理pdf文件的一个例子
- Codeforces - 577B dp
- Linux命令
- PreparedStatement setDate() 和setTimestamp
- 在linux系统下的小米2 adb无法识别的解决方案
- datatable筛选、查询-------linq
- Yii上传文件(头像)的一个例子(后端处理)
- 15_09_15 ( RuntimeException ) 运行异常
- WinExec ShellExecute 以及CreateProcess
- Document distance note
- mapreduce源码结构以及主要过程源码
- 如何加快Android Studio 编译app 的速度
- c++ 服务端
- 解决:有时listview设置为wrap内容时,listview高度只显示一条item的高度
- smoothstep