yii文件上传

本文描述笔者做的简单例子代码在yii利用其组建生成Yii 文件上传表单,实现文件上传,并对其中中文文件名进行编码处理,在具体显示部分用到CDetailView,并对其使用进一步深化,这里不太容易操作的是表单的建立,数据的获取,笔者的例子针对两个表,category表和product表,双方根据category_id进行联系,product包含字段为id,name,category_id,description,filename等,其中filename字段只是用来测试文件上传表单的处理,在实际过程中,可能会是图片名(图片上传),在添加product产品时添加产品名,选择分类,描述,上传图片(存放在’./assets/upload/’下,请注意Yii中路径的表示),创建成功将显示相关条目的信息,在文件名对应的地方,链接到相应位置,这里用到CHtml::link(),两个参数,第一个为显示数据,第二个显示的是链接地址。

1.表单文件(本例是_form.php,表单提交页面)

<?php $form=$this->beginWidget(‘CActiveForm’, array( ‘id’=>’product-form’, ‘htmlOptions’=>array(‘enctype’=>’multipart/form-data’),  ‘enableAjaxValidation’=>false,)); ?>//指定文件上传表单,enctype属性一定是要设置的

<div>  <?php echo $form->labelEx($model,’filename’); ?>                                                         <?php echo $form->FileField($model,’filename’); ?>                                                                <?php echo $form->error($model,’filename’); ?> </div>//显示浏览文件

2.控制器动作(action)

$model=new Product;                                                                                                                       if(isset($_POST['Product']))                                                                                                             { $model->attributes=$_POST['Product'];                                        $file=CUploadedFile::getInstance($model,’filename’); //获取表单名为filename的上传信息  $filename=$file->getName();          //获取文件名                                                                          $filesize=$file->getSize();                 //获取文件大小                                                                      $filetype=$file->getType();                //获取文件类型                                                                    $model->filename=$filename;                 //数据库中要存放文件名                                               $filename1=iconv(“utf-8″, “gb2312″, $filename);//这里是处理中文的问题,非中文不需要   $uploadfile=”./assets/upload/”.$filename1;                                                                          $file->saveAs($uploadfile,true);//上传操作                                                                              if($model->save())                                 //执行保存,写入数据库                                        $this->redirect(array(‘view’,'id’=>$model->id)); }  //数据存放成功,跳转到view页面$category=Category::model()->findAll();                  //此处是为提交表单,传递分类信息  $this->render(‘create’,array( ‘model=>$model, category’=>$category, )); }//交创建视图,并传递相应的信息,一是model,表单,二是category,分类信息

3.create.php(动作视图文件)

<?php echo $this->renderPartial(‘_form’, array(‘model’=>$model,category’=>$category)); ?>

4.view.php(页面显示)

<?php $this->widget(‘zii.widgets.CDetailView’, array( ‘data’=>$model, ‘attributes’=>array( ‘id’, ‘name’, ‘category_id’, ‘description’, array( ‘label’=>’filename’, ‘type’=>’raw’, ‘value’=>CHtml::link(CHtml::encode($model->filename),                                 “./assets/upload/”.CHtml::encode($model->filename)), ) ),)); ?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值