zoukankan      html  css  js  c++  java
  • yii图片上传

    http://wuhai.blog.51cto.com/2023916/953300

    首先感谢这里的博主,提供了思路,不过在调用 $model->b_image->extensionName 这个时,总提示错误,调呀调的,调烦了,就自己写一个吧。

    其他不多说,看步骤

    一、下载yii官方提供的图片处理扩展 http://www.yiiframework.com/extension/image 具体配置跟官方的一样,这个扩展提供了两套调用方式,我选择了第一种,就是在配置文件里进行添加组件的方式,来张图,有图有真象哈

    二、在protected目录下新建一utils目录,在目录下新建Upload.php文件,代码如下

    <?php
    /**
     * @desc 对后台上传的图片进行简单处理
    * @author Debm! * @param $name 原图片名称 * @param $type 判断mime值 * @param $tmp_name 临时位置,转换目录使用 * @param $width 新图宽 * @param $height 新图高 * @return string path 存放路径 */ class Upload { public static function createImageLink($name, $type, $tmp_name, $width, $height){ $imageMime = array( 'image/gif', 'image/jpeg', 'image/bmp', //需要时添加... ); if(!in_array($type, $imageMime)){ return false; }else{ //获取图片后缀 $imageExt = end(explode('.', $name)); //以当前时间命名此图片,避免重复 $name = time().uniqid().'.'.$imageExt; //创建存放路径 $path = Yii::app()->request->baseUrl.'images/uploads/'.$name; //图片处理 $image = Yii::app()->image->load($tmp_name); $image->resize($width, $height)->rotate(0)->quality(100)->sharpen(20); $image->save($path); // move_uploaded_file($tmp_name,$path); return $path; } } }

    三、在 protected/config/main.php 这个文件里,把刚才的utils目录载入

    'import'=>array(
    'application.models.*',
    'application.components.*',
    'application.extensions.*',
    'application.helpers.*',
    'application.utils.*',
    'application.modules.boss.modules.srbac.controllers.SBaseController',
    ),

    四、写代码

    model部分

    添加图片验证规则,其他规则根据自己需要进行添加,这里我只添加需要展示的代码(views和controller一样,不再说明了)

    public function rules()
    	{
    		return array(
    			array('b_image', 'file', 'types' => 'jpg,gif,png', 'on' => 'insert'),
    		);
    	}
    

    views

    <?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'iot-books-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,
    'htmlOptions'=>array('enctype'=>'multipart/form-data'),//这个一定要加,否则获取不到图片
    )); ?>
    
    <div class="row">
    		<?php echo $form->labelEx($model,'b_image'); ?>
    		<?php
    			if(!$model->isNewRecord){
    				?>
    				<img src="<?php echo Yii::app()->request->baseUrl.'/'.$model->b_image; ?>">
    				<?php
    			}
    		?>
    		<?php echo CHtml::activeFileField($model,'b_image',array('size'=>60,'maxlength'=>255)); ?>
    		<?php echo $form->error($model,'b_image'); ?>
    	</div>
    

    controller

    /**
    	 * Creates a new model.
    	 * If creation is successful, the browser will be redirected to the 'view' page.
    	 */
    	public function actionCreate()
    	{
    		$model=new IotBooks;
    
    		// Uncomment the following line if AJAX validation is needed
    		// $this->performAjaxValidation($model);
    
    		if(isset($_POST['IotBooks']))
    		{
    			$imgUrl = '';
    			if($_FILES){
    				$name = $_FILES['IotBooks']['name']['b_image']; //上传图片原名
    				$type = $_FILES['IotBooks']['type']['b_image']; //上传图片mime类型
    				$tmp_name = $_FILES['IotBooks']['tmp_name']['b_image']; //上传图片临时存放位置
    				$width = 100; //缩略图宽
    				$height = 100; //缩略图高
    				$imgUrl = Upload::createImageLink($name, $type, $tmp_name, $width, $height);
    			}
    			$model->attributes = $_POST['IotBooks'];
    			$model->b_image = $imgUrl;
    			if($model->save())
    				$this->redirect(array('view','id'=>$model->bid));
    		}
    		$this->render('create',array(
    			'model'=>$model,
    		));
    	}
    
    	/**
    	 * 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);
    
    		if(isset($_POST['IotBooks']))
    		{	
    			$imgUrl = $model->b_image;
    			if($_FILES && ($_FILES['IotBooks']['name']['b_image'] != '')){
    				$name = $_FILES['IotBooks']['name']['b_image']; //上传图片原名
    				$type = $_FILES['IotBooks']['type']['b_image']; //上传图片mime类型
    				$tmp_name = $_FILES['IotBooks']['tmp_name']['b_image']; //上传图片临时存放位置
    				$width = 100; //缩略图宽
    				$height = 100; //缩略图高
    				$imgUrl = Upload::createImageLink($name, $type, $tmp_name, $width,$height);
    			}
    			$model->attributes = $_POST['IotBooks'];
    			$model->b_image = $imgUrl;
    			if($model->save())
    				$this->redirect(array('view','id'=>$model->bid));
    		}
    
    		$this->render('update',array(
    			'model'=>$model,
    		));
    	}
    

    完工了,试一下吧

  • 相关阅读:
    [extjs] ExtJs4.2 Form 表单提交
    [java ] java.util.zip.ZipException: error in opening zip file
    Oracle 11g 执行计划管理1
    Oracle 分区表的统计信息实例
    Oracle 手动收集统计信息
    Oracle 10g 之自动收集统计信息
    Oracle 11g 之自动收集统计信息
    Oracle 11gR2 RAC修改SCAN IP
    共享内存shared pool (6):追踪sql语句
    共享内存shared pool (5):详解一条SQL在library cache中解析
  • 原文地址:https://www.cnblogs.com/debmzhang/p/3403483.html
Copyright © 2011-2022 走看看