Yii+upload实现AJAX上传图片的方法


Posted in PHP onJuly 13, 2016

本文实例讲述了Yii+upload实现AJAX上传图片的方法。分享给大家供大家参考,具体如下:

控制器代码:

/**
* get ajax uploaded files.
*/
public function actionGetAjax(){
    $model=new Attachment();//加载附件模型
    $tmpFile  = CUploadedFile::getInstanceByName('image');//读取图像上传域,并使用系统上传组件上传
    $Directroy = Yii::app()->params['uploadPath'];//读取上传配置文件,我的配置是/uploads
    //创建文件存放路径
    $y     = date('Y');
    $m     = date('m');
    $d     = date('d');
    $Directroy = $Directroy."/";
    $pathd = $Directroy.$y."/".$m."/".$d."/";
    Tool::makedir(dirname(Yii::app()->BasePath).$pathd); //创建文件夹,此处一定要加上dirname(Yii::app()->BasePath)不然可能会出错;
    if(is_object($tmpFile) && get_class($tmpFile)==='CUploadedFile'){
      $filename        = time().rand(0,9);
      $ext          = $tmpFile->extensionName;//上传文件的扩展名
      if($ext=='jpg'||$ext=='gif'||$ext=='png'){
          $big          = $pathd . $filename . '_600.' . $ext; //310缩略图
        $small         = $pathd . $filename . '_310.' . $ext; //310缩略图
        $thumb         = $pathd . $filename . '_100.' . $ext; //100缩略图
        $model->zat_thumb    = $thumb; //缩略图
      }
      $uploadfile       = $pathd . $filename . '.' . $ext;   //保存的路径
      $model->zat_url     = $pathd . $filename . '.' . $ext;   //重新赋值
      $model->zat_file_name  = $filename . '.' . $ext;        //文件名称
      $model->zat_title    = $tmpFile->name;            //文件标题
      $model->zat_file_type  = $tmpFile->type;            //文件类型
      $model->zat_file_size  = $tmpFile->size;            //文件大小
      $model->zat_image    = 2;
      $model->zat_ip     = Yii::app()->request->userHostAddress; //上传IP
      //print_r($uploadfile);
    }
    if($model->save()){
      $tmpFile->saveAs(dirname(Yii::app()->BasePath).$uploadfile);//保存到服务器
      if($ext=='jpg'||$ext=='gif'||$ext=='png'){
        $img = Yii::app()->image->load(dirname(Yii::app()->BasePath).$uploadfile); //使用image-Kohana图像处理库扩展
        $img->resize(600,600)->quality(85);
        $img->save(dirname(Yii::app()->BasePath).$big);//生成600缩略图
        $img->resize(310,310)->quality(85);
        $img->save(dirname(Yii::app()->BasePath).$small);//生成310缩略图
        $img->resize(100,100)->quality(85);
        $img->save(dirname(Yii::app()->BasePath).$thumb);//生成100缩略图
      }
      if($ext=='jpg'||$ext=='gif'||$ext=='png'){
        $str = json_encode(
          array(
            'upfile'=>array(
              'zat_id' => Yii::app()->db->getLastInsertID(), //取插ID
              'file' => $uploadfile,//原图
              'small' => $small,//310缩略图
              'thumb' => $thumb,//100缩略图
            )
          )
        );
      }else{
        $str = json_encode(
          array(
            'upfile'=>array(
              'zat_id' => Yii::app()->db->getLastInsertID(),
              'file' => $uploadfile,
            )
          )
        );
      }
      echo $str;
    }
}

VIEW代码:

<input id="fileupload" type="file" name="image" multiple>
<script src="<?php echo Yii::app()->baseUrl;?>/js/jquery.ui.widget.js"></script>
<script src="<?php echo Yii::app()->baseUrl;?>/js/jquery.iframe-transport.js"></script>
<script src="<?php echo Yii::app()->baseUrl;?>/js/jquery.fileupload.js"></script>
<script>
$(function () {
  $('#fileupload').fileupload({
    dataType: 'json',
    url: '/Attachment/GetAjax',
    success: function (json) {
        $('#MemType_zmt_pic').attr('value',json.upfile.file);
        $("#images").attr('src',json.upfile.file);
    }
  });
});
</script>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
PHP安全配置
Dec 06 PHP
php公用函数列表[正则]
Feb 22 PHP
PHP 中的批处理的实现
Jun 14 PHP
php 面向对象的一个例子
Apr 12 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
PHP项目多语言配置平台实现过程解析
May 18 PHP
Yii安装与使用Excel扩展的方法
Jul 13 #PHP
Yii配置与使用memcached缓存的方法
Jul 13 #PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 #PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 #PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 #PHP
ucenter中词语过滤原理分析
Jul 13 #PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 #PHP
You might like
mayfish 数据入库验证代码
2010/04/30 PHP
php URL验证正则表达式
2011/07/19 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP chr()函数讲解
2019/02/11 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
js 方法实现返回多个数据的代码
2009/04/30 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python实现ping的方法
2015/07/06 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
中学家长会邀请函
2014/01/17 职场文书
幼儿园辞职信
2015/05/13 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
企业安全生产检查制度
2015/08/06 职场文书
中学团支部工作总结
2015/08/13 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers