热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

YII框架下用AJAX上传图片

YII框架下用AJAX上传图片

1.控制器中的代码:

    /**
     * get ajax uploaded files.
     */
    public function actionGetAjax(){
        $model=new Attachment();//加载附件模型
        //读取图像上传域,并使用系统上传组件上传
        $tmpFile   = CUploadedFile::getInstanceByName('image');
        //读取上传配置文件,我的配置是/uploads
        $Directroy = Yii::app()->params['uploadPath'];
        //创建文件存放路径
        $y = date('Y');
        $m = date('m');
        $d = date('d');
        $Directroy = $Directroy."/";
        $pathd = $Directroy.$y."/".$m."/".$d."/";     
        //创建文件夹,此处一定要加上dirname(Yii::app()->BasePath)不然可能会出错;        
        Tool::makedir(dirname(Yii::app()->BasePath).$pathd); 
        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'){      
                //使用image-Kohana图像处理库扩展
                $img = Yii::app()->image->load(dirname(Yii::app()->BasePath).$uploadfile); 
                $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;
        }

    }

2.视图中的代码:

3.js代码:




相关js文件的下载地址:
jquery.ui.widget.js
jquery.iframe-transport.js
jquery.fileupload.js


推荐阅读
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 本文详细介绍了如何手动编写兼容IE的Ajax函数,以及探讨了跨域请求的实现方法和原理,包括JSONP和服务器端设置HTTP头部等技术。 ... [详细]
  • 本文探讨了为何采用RESTful架构及其优势,特别是在现代Web应用开发中的重要性。通过前后端分离和统一接口设计,RESTful API能够提高开发效率,支持多种客户端,并简化维护。 ... [详细]
  • 本文介绍了如何在 Framework7 中通过 AJAX 技术动态加载页面内容,确保用户在点击导航链接时能够顺利加载目标页面。 ... [详细]
  • 消息传递这一应用广泛存在于各个网站中,这个功能也是一个网站必不可少的。本文主要介绍了php中Redis的应用--消息传递。下面跟着小编一起来看下吧阅读目录1、摘要2、实现方法3、一 ... [详细]
  • SonarQube配置与使用指南
    本文档详细介绍了SonarQube的配置方法及使用流程,包括环境准备、样本分析、数据库配置、项目属性文件解析以及插件安装等内容,适用于具有Linux基础操作能力的用户。 ... [详细]
  • 本文介绍了在处理财务凭证查询时,如何实现从插入或修改页面返回至原始查询结果页面,并确保数据保持最新状态的方法。通过使用JavaScript和Java的Session管理技术,解决了动态页面中AJAX调用失效的问题。 ... [详细]
  • 本文探讨了在Android平台下编写和读取.JSON文件的方法,解决读取文件时遇到的字符间异常空格问题。 ... [详细]
  • 本文探讨了如何利用 Application 对象在 PHP 应用程序中共享数据,特别是在多用户环境中保持数据的一致性和安全性。文章还介绍了 Application 对象的基本结构、方法和事件,并提供了实际应用示例。 ... [详细]
  • 2023年PHP处理请求超时的全面指南
    本文详细介绍了在PHP中处理请求超时的各种方法,包括设置脚本执行时间、处理file_get_contents函数超时以及优化AJAX请求等,适合开发者参考学习。 ... [详细]
  • django项目中使用手机号登录
    本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数function.py文件se ... [详细]
  • 现在的新手程序猿,动不动就是框架,就连外面培训的也是框架,我就问一句,没了框架是不是就啥也不会了 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
author-avatar
happy雨之泪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有