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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
php适配器模式介绍
Aug 14 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
PHP SESSION机制的理解与实例
Mar 22 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
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
angular.element方法汇总
2015/01/07 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
Python中datetime模块参考手册
2017/01/13 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
普通院校学生的自荐信
2013/11/27 职场文书
纠风工作实施方案
2014/03/15 职场文书
同学聚会主持词
2014/03/18 职场文书
授权委托书格式模板
2014/04/03 职场文书
团组织推优材料
2014/12/29 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
治庸问责工作总结
2015/08/11 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL