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实现下载文件的两种方法
Jul 05 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
PHP下载文件的函数实例代码
May 18 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
拖动时防止选中
2017/02/03 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
python登陆asp网站页面的实现代码
2015/01/14 Python
python实现统计代码行数的方法
2015/05/22 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
django 发送手机验证码的示例代码
2018/04/25 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
听课评语大全
2014/04/30 职场文书
环境卫生标语
2014/06/09 职场文书
禁烟标语大全
2014/06/11 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python