Yii框架上传图片用法总结
本文实例讲述了Yii框架上传图片用法。分享给大家供大家参考,具体如下:
Yii提供了CUploadedFile来上传文件,比如图片,或者文档。
官方关于这个类的介绍:
CUploadedFilerepresentstheinformationforanuploadedfile.
CallgetInstancetoretrievetheinstanceofanuploadedfile,andthenusesaveAstosaveitontheserver.Youmayalsoqueryotherinformationaboutthefile,includingname,tempName,type,sizeanderror.
publicproperties
1、模型层面M,把一个字段在rules方法里设置为file属性。
array('url',
'file',//定义为file类型
'allowEmpty'=>true,
'types'=>'jpg,png,gif,doc,docx,pdf,xls,xlsx,zip,rar,ppt,pptx',//上传文件的类型
'maxSize'=>1024*1024*10,//上传大小限制,注意不是php.ini中的上传文件大小
'tooLarge'=>'文件大于10M,上传失败!请上传小于10M的文件!'
),
2、视图层View,这里需要用到CHtml::activeFileField来生成选择文件的button,注意是上传文件,所以在该标单中enctype应该设置为:multupart/form-data
<?php$form=$this->beginWidget('CActiveForm',array(
<spanstyle="white-space:pre"></span>'id'=>'link-form',
<spanstyle="white-space:pre"></span>'enableAjaxValidation'=>false,
<spanstyle="white-space:pre"></span>'htmlOptions'=>array('enctype'=>'multipart/form-data'),
));?>
<divclass="row"> <?phpecho$form->labelEx($model,'url');?> <?phpechoCHtml::activeFileField($model,'url');?> <?phpecho$form->error($model,'url');?> </div>
3、控制层C
$model=newLink;
if(isset($_POST['Link']))
{
$model->attributes=$_POST['Link'];
if(empty($_POST['Link']['name'])){
$model->name=$model->url;
}
$file=CUploadedFile::getInstance($model,'url');
//获得一个CUploadedFile的实例
if(is_object($file)&&get_class($file)==='CUploadedFile'){
//判断实例化是否成功
$model->url='./assets/upfile/file_'.time().'_'.rand(0,9999).'.'.$file->extensionName;//定义文件保存的名称
}else{
$model->url='./assets/upfile/noPic.jpg';
//若果失败则应该是什么图片
}
if($model->save()){
if(is_object($file)&&get_class($file)==='CUploadedFile'){
$file->saveAs($model->url);//上传图片
}
$this->redirect(array('view','id'=>$model->lid));
}
}
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。