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项目的方法
Oct 09 PHP
php self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
php对数组排序的简单实例
Dec 25 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
html静态页面调用php文件的方法
Nov 13 PHP
php获取当月最后一天函数分享
Feb 02 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
php封装的验证码类分享
Feb 26 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
php解决安全问题的方法实例
Sep 19 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
PHP新手上路(十四)
2006/10/09 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
Nginx实现反向代理
2017/09/20 Servers
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
javascript中的隐式调用
2018/02/10 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
python对象及面向对象技术详解
2016/07/19 Python
python实现简单爬虫功能的示例
2016/10/24 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python字典的核心底层原理讲解
2019/01/24 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
用Python制作音乐海报
2021/01/26 Python
北京爱情故事观后感
2015/06/12 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
Java实现房屋出租系统详解
2021/10/05 Java/Android
Python+DeOldify实现老照片上色功能
2022/06/21 Python