//增
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' ) );
}
}
Yii上传文件(头像)的一个例子(后端处理)
最新推荐文章于 2021-03-28 06:52:04 发布