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


推荐阅读
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 查询单个functionquery(id){$.ajax({url:smallproductServlet,async:true,type:POST,data:{typ ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
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社区 版权所有