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+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
php银联网页支付实现方法
Mar 04 PHP
PHP输入输出流学习笔记
May 12 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 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与已存在的Java应用程序集成
2006/10/09 PHP
php自动跳转中英文页面
2008/07/29 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
小程序实现悬浮搜索框
2019/07/12 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
四年级评语大全
2014/04/21 职场文书
计划生育工作汇报
2014/10/28 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
学习心理学心得体会
2016/01/22 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫