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 相关文章推荐
php中var_export与var_dump的区别分析
Aug 21 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
php session 写入数据库
Feb 13 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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
php5.3 废弃函数小结
2010/05/16 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
PHP关联链接常用代码
2012/11/05 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
js实现登录与注册界面
2017/11/01 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
Python中的__slots__示例详解
2017/07/06 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
2018/06/09 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
pywinauto自动化操作记事本
2019/08/26 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python opencv实现简易画图板
2020/08/27 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
退休感言
2014/01/28 职场文书
酒店总经理助理职责
2014/02/12 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
投资建议书模板
2014/05/12 职场文书
特岗教师个人总结
2015/02/10 职场文书
实习证明模板
2015/06/16 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书