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
PHP4与PHP5的时间格式问题
Feb 17 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
php查询whois信息的方法
Jun 08 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
php 可变函数使用小结
Jun 12 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
PHP中文编码小技巧
2014/12/25 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
对python Tkinter Text的用法详解
2018/10/11 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
幼儿园庆六一游园活动方案
2014/01/29 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
2019 入党申请书范文
2019/07/10 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL