PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
<div class="row"> <?php echo $form->labelEx($model,'imagefile'); ?> <?php echo $form->fileField($model,'imagefile',array('size'=>50)); if(!empty($model->imgurl)) echo "<img src='".BASEURL."/resources/icons/picture.png' title="缩略图"/>"; ?> </div>
create控制器:
$model->attributes=$_POST['Article']; $upload=CUploadedFile::getInstance($model,'imagefile'); //得到原照片这个对象 if(!empty($upload)) { $model->imgurl=Upload::createFile($upload,'article','create'); imgurl数据库字段表示图片存储路径 }
上传类:放在extension里面
<?php /** * $upload: CUploadedFile::getInstance; * $type: artilce product * $act: create update * $imgurl: delete old imgurl when update */ class Upload{ public static function createFile($upload,$type,$act,$imgurl=''){ if(!empty($imgurl)&&$act==='update'){ $deleteFile=Yii::app()->basePath.'/../'.$imgurl; if(is_file($deleteFile)) unlink($deleteFile); //修改图片的时候删除原片 } $uploadDir=Yii::app()->basePath.'/../uploads/'.$type.'/'.date('Y-m',time()); //指定路径名格式 self::recursionMkDir($uploadDir); //创建目录 $imgname=time().'-'.rand().'.'.$upload->extensionName; //图片存储路径 $imageurl='/uploads/'.$type.'/'.date('Y-m',time()).'/'.$imgname; //存储绝对路径 $uploadPath=$uploadDir.'/'.$imgname; if($upload->saveAs($uploadPath)){ return $imageurl; }else{ return null; } } private static function recursionMkDir($dir){ if(!is_dir($dir)){ //is_dir() 函数检查指定的文件是否是目录。 if(!is_dir(dirname($dir))){ self::recursionMkDir(dirname($dir)); //dirname() 函数返回路径中的目录部分。 mkdir($dir,'0777'); //mkdir() }else{ mkdir($dir,'0777'); //mkdir() 函数创建目录。若成功,则返回 true,否则返回 false。 } } } }
扩展:
与前面(http://zccst.iteye.com/blog/1114948)的区别是不再依赖model。 也不再依赖yii自带的前端表单控件activeFileField。 感觉这样轻量级多了。 简言之: 1,form要带enctype="multipart/form-data" 2,文件控件只需写name即可。<input type="file" name="fileName" /> 3,直接在php端使用$attach = CUploadedFile::getInstanceByName("fileName");即可。 不需要先用$fileName = $this->request->getParam('fileName'); 注可以在前端写多个相同name的文件控件,这样在后端用$attaches = CUploadedFile::getInstancesByName("fileName");即可 一、前端代码 Html代码 收藏代码 <form id="upForm" action="<?php echo $this->createUrl('repairUpload'); ?>" method="post" enctype ="multipart/form-data"> <input type="file" name="repair_attached_file" id="repair_attached_file" /><input type="submit" name="submitBtn" value="立即上传" /> </form> <span id="upload_repairinfo_success" style="color:blue;"></span> 二、后端代码 Php代码 收藏代码 public function actionRepairUpload(){ $attach = CUploadedFile::getInstanceByName('repair_attached_file'); $retValue = ""; if($attach->size > 3*1024*1024){ $retValue = "提示:文件大小不能超过3M"; }else{ $f = file_get_contents($attach->tempName); $a = new Attachment(); $a->ref_type = "failParts"; $a->data = $f; $a->file_path = $attach->name; $a->save(); $retValue = $a->id; } echo $retValue; }
Yii生成缩略图生成函数cthumb admin | 2012-07-01 需求 Yii 1.0以上版本 要求GD库 下载本站附件 安装 解压文件至protected/extensions extension=php_gd2.dll 使用 看下面的例子: ... $im = null; $imagetype = strtolower($model->image->extensionName) if($imagetype == 'gif') $im = imagecreatefromgif($path); else if ($imagetype == 'jpg') $im = imagecreatefromjpeg($path); else if ($imagetype == 'png') $im = imagecreatefrompng($path); CThumb::resizeImage ( $im,100, 100, 'd:\upload\head\\thumb\\test' . $model->image->extensionName, $model->image->extensionName );
转载请注明:谷谷点程序 » Yii的上传类使用CUploadedFile