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 相关文章推荐
一个ftp类(ini.php)
Oct 09 PHP
利用js调用后台php进行数据处理原码
Oct 09 PHP
无限级别菜单的实现
Oct 09 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
JavaScript实现滚动栏效果的方法
Apr 27 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
IE8 原生JSON支持
2009/04/13 Javascript
js 文件引入实现代码
2010/04/23 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
python实现最长公共子序列
2018/05/22 Python
设置python3为默认python的方法
2018/10/31 Python
Python3中的bytes和str类型详解
2019/05/02 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
python3调用windows dos命令的例子
2019/08/14 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
python制作微博图片爬取工具
2021/01/16 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
中层干部岗位职责
2013/12/18 职场文书
教师现实表现材料
2014/02/14 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
美丽的大脚观后感
2015/06/03 职场文书
太空授课观后感
2015/06/17 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
pandas中关于apply+lambda的应用
2022/02/28 Python