热门标签 | 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


推荐阅读
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 探讨了如何解决Ajax请求响应时间过长的问题。本文分析了一个从服务器获取少量数据的Ajax请求,尽管服务器已经对JSON响应进行了缓存,但实际响应时间仍然不稳定。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 本文详细解析了如何使用Python的urllib模块发起POST请求,并通过实例展示如何爬取百度翻译的翻译结果。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 本文详细介绍了如何利用Go语言和WebSockets技术构建一个高效的实时聊天系统。随着网络应用的日益复杂化,实时交互成为了提升用户体验的关键要素之一。通过本指南,开发者可以学习到最新的技术和最佳实践。 ... [详细]
  • 在Web开发过程中,Ajax技术常用于前后端数据交互。其中一个重要的属性async决定了请求是否以异步方式执行,本文将详细解析async属性的作用及使用方法。 ... [详细]
  • 理解文档对象模型(DOM)
    本文介绍了文档对象模型(DOM)的基本概念,包括其作为HTML文档的节点树结构,以及如何通过JavaScript操作DOM来实现网页的动态交互。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
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社区 版权所有