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 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
PHP_Flame(Version:Progress)的原代码
Oct 09 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
Oct 21 PHP
php使用curl获取https请求的方法
Feb 11 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
php HTML无刷新提交表单
Apr 05 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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之第九天
2006/10/09 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
动态加载iframe
2006/06/16 Javascript
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
js实现计算器功能
2020/08/10 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
使用Kivy将python程序打包为apk文件
2017/07/29 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
django中嵌套的try-except实例
2020/05/21 Python
python def 定义函数,调用函数方式
2020/06/02 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
指针和引用有什么区别
2013/01/13 面试题
性能测试工程师的面试题
2015/02/20 面试题
《北京的春节》教学反思
2014/04/07 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers