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 输出双引号&quot;与单引号'的方法
May 09 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
php json转换相关知识(小结)
Dec 21 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 PHP
laravel-admin select框默认选中的方法
Oct 03 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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电台频率大全 - 12 安徽省
2020/03/11 无线电
消息持续发送的完整例子
2006/10/09 PHP
php购物车实现方法
2015/01/03 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
JavaScript中的undefined学习总结
2013/11/30 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
Python实现查看系统启动项功能示例
2018/05/10 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
税务会计岗位职责
2014/02/18 职场文书
三八活动策划方案
2014/08/17 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
水知道答案观后感
2015/06/08 职场文书
个人催款函范文
2015/06/23 职场文书
中秋节随笔
2015/08/15 职场文书
新党员入党决心书
2015/09/22 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS