yii中使用activeFileField实现图片的上传

在YII中要实现图片的上传,可以使用activeFileField

1、在VIEW中:

enctype这句话一定要加上去。

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'tbl-goods-form',
	// Please note: When you enable ajax validation, make sure the corresponding
	// controller action is handling ajax validation correctly.
	// There is a call to performAjaxValidation() commented in generated controller code.
	// See class documentation of CActiveForm for details on this.
	'enableAjaxValidation'=>false,
        //要实现图片的上传与修改,enctype这句话一定要加上去。
        'htmlOptions'=>array('enctype'=>'multipart/form-data')
)); ?>



2、在VIEW中:

<div class="row">
		<?php echo $form->labelEx($model,'goods_small_pic'); ?>
		<?php //echo $form->textField($model,'goods_small_pic',array('size'=>60,'maxlength'=>255)); ?>
		<?php echo CHtml::activeFileField($model,'goods_small_pic'); ?>
                <?php echo $form->error($model,'goods_small_pic'); ?>
                <!--预览图,并且设置一个隐藏域,用来暂存修改前的URL信息-->
                <?php echo '<img src="'.$model->goods_small_pic.'"    width="100px"/>'; ?>
                <?php if(!$model->isNewRecord){?>
                <input type="hidden" name="temp_img2" id="hiddenField"    value="<?php echo $model->goods_small_pic;?>"/>
                <?php }?>
	</div>


3、模型中:

	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('is_sale, is_delete, is_best, is_new, is_hot, is_promote', 'numerical', 'integerOnly'=>true),
			array('cat_id, click_count, brand_id, goods_number, market_price, shop_price, promote_price', 'length', 'max'=>8),
			array('goods_sn', 'length', 'max'=>16),
			array('goods_name', 'length', 'max'=>32),
			//array('goods_desc, goods_small_pic, goods_big_pic', 'length', 'max'=>255),
                        array('goods_desc','length','max'=>255),
                        //要实现图片的上传与修改,要将保存图片URL地址的字段改为file,如下所示。
                        array('goods_small_pic','file','types'=>'jpg,gif,png','on'=>'insert'),
                        array('goods_big_pic','file','types'=>'jpg,gif,png','on'=>'insert'),
                    
			array('promote_start_date, promote_end_date, add_time', 'safe'),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('goods_id, cat_id, goods_sn, goods_name, click_count, brand_id, goods_number, market_price, shop_price, promote_price, promote_start_date, promote_end_date, goods_desc, goods_small_pic, goods_big_pic, is_sale, is_delete, is_best, is_new, is_hot, is_promote, add_time', 'safe', 'on'=>'search'),
		);
	}


 

4、控制器中:

	public function actionCreate()
	{
		$model=new TblGoods;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
                //使用下拉菜单,实现添加产品或修改产品时,可以从下拉列表选择产品类别:以下为第1步
                //在Goods控制器下实例化category对象,并执行SQL语句,取得所有数据。
                $category =  TblCategory::model()->findAll();

		if(isset($_POST['TblGoods']))
		{
			$model->attributes=$_POST['TblGoods'];
                        
                        //实现文件,图片的上传
                        $model->goods_small_pic=  CUploadedFile::getInstance($model, goods_small_pic);
                        $model->goods_big_pic=  CUploadedFile::getInstance($model, goods_big_pic);
                        if($model->goods_small_pic){
                            $newimg='goods_small_pic_'.time().'_'.rand(1,9999).".".$model->goods_small_pic->extensionName;
                            //$newimg="abc.jpg";
                            $model->goods_small_pic->saveAs('assets/uploads/tblgoods/'.$newimg);
                            $model->goods_small_pic='assets/uploads/tblgoods/'.$newimg;
                        }
                        if($model->goods_big_pic){
                            $newimg2='goods_big_pic_'.time().'_'.rand(1,9999).".".$model->goods_big_pic->extensionName;
                            //$newimg2="abcd.jpg";
                            $model->goods_big_pic->saveAs('assets/uploads/tblgoods/'.$newimg2);
                            $model->goods_big_pic='assets/uploads/tblgoods/'.$newimg2;
                        }
                        
			if($model->save())
				$this->redirect(array('view','id'=>$model->goods_id));
		}

		$this->render('create',array(
			'model'=>$model,
                        //使用下拉菜单,实现添加产品或修改产品时,可以从下拉列表选择产品类别:以下为第2步
                        //在Goods控制器下create将上面得到的数组,分配到create这个VIEW页面。
                        'category'=>$category
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
                // 
                //使用下拉菜单,实现添加产品或修改产品时,可以从下拉列表选择产品类别:以下为第1步
                //在Goods控制器下实例化category对象,并执行SQL语句,取得所有数据。
                $category =  TblCategory::model()->findAll();

		if(isset($_POST['TblGoods']))
		{
			$model->attributes=$_POST['TblGoods'];
                        
                        //实现文件,图片的上传
                        $model->goods_small_pic=  CUploadedFile::getInstance($model, goods_small_pic);
                        $model->goods_big_pic=  CUploadedFile::getInstance($model, goods_big_pic);
                        if($model->goods_small_pic){
                            $newimg='goods_small_pic_'.time().'_'.rand(1,9999).".".$model->goods_small_pic->extensionName;
                            //$newimg="abc.jpg";
                            $model->goods_small_pic->saveAs('assets/uploads/tblgoods/'.$newimg);
                            $model->goods_small_pic='assets/uploads/tblgoods/'.$newimg;
                        }else{
                            $model->goods_small_pic=$_POST['temp_img1'];
                        }
                        if($model->goods_big_pic){
                            $newimg2='goods_big_pic_'.time().'_'.rand(1,9999).".".$model->goods_big_pic->extensionName;
                            //$newimg2="abcd.jpg";
                            $model->goods_big_pic->saveAs('assets/uploads/tblgoods/'.$newimg2);
                            $model->goods_big_pic='assets/uploads/tblgoods/'.$newimg2;
                        }else{
                            $model->goods_big_pic=$_POST['temp_img2'];
                        }
                        
			if($model->save())
				$this->redirect(array('view','id'=>$model->goods_id));
		}

		$this->render('update',array(
			'model'=>$model,
                        //使用下拉菜单,实现添加产品或修改产品时,可以从下拉列表选择产品类别:以下为第2步
                        //在Goods控制器下create将上面得到的数组,分配到create这个VIEW页面。
                        'category'=>$category
		));
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值