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 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
有关php运算符的知识大全
Nov 03 PHP
PHP 正则表达式常用函数
Aug 17 PHP
php+mysql查询优化简单实例
Jan 13 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
php 的反射详解及示例代码
Aug 25 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
php实现微信扫码支付
Mar 26 PHP
PHP多维数组排序array详解
Nov 21 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
Python运算符重载用法实例
2015/05/28 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
班组长安全生产职责
2013/12/16 职场文书
大型活动策划方案
2014/01/12 职场文书
土地转让协议书
2014/04/15 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
英语系毕业生求职信
2014/07/13 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
python 闭包函数详细介绍
2022/04/19 Python
Mysql数据库group by原理详解
2022/07/07 MySQL