ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法


Posted in PHP onOctober 29, 2014

本文实例讲述了ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法。分享给大家供大家参考。具体实现方法分析如下:

首先,AjaxFileUploader插件是一个基于jquery的插件,我们可以使用AjaxFileUploader插件来实现文件异步上传功能了,使用这款插件上传文件不要担心兼容性的问题,它的兼容性可以说兼容所有主流浏览器,下面来给大家介绍一个AjaxFileUploader+thinkphp实现文件上传的实例。

ThinkPHP框架下用AjaxFileUploader插件实现ajax文件上传,支持多种文件格式,页面无刷新上传。

在Lib/Action/目录下创建upAction.class.php文件,代码如下:

<?php

class upAction extends BaseAction{

public function index(){

    $this->display();

}

 

/*

*@文件上传

*@author    FineYi

*@date        2013-01-23

*/

public function upLoadFile(){

    $error = "";

    $msg = "";

    $fileElementName = 'fileToUpload';

    if(!empty($_FILES[$fileElementName]['error'])){

        switch($_FILES[$fileElementName]['error']){

            case '1':

                $error = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';

                break;

            case '2':

                $error = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';

                break;

            case '3':

                $error = 'The uploaded file was only partially uploaded';

                break;

            case '4':

                $error = 'No file was uploaded.';

                break;

 

            case '6':

                $error = 'Missing a temporary folder';

                break;

            case '7':

                $error = 'Failed to write file to disk';

                break;

            case '8':

                $error = 'File upload stopped by extension';

                break;

            case '999':

            default:

                $error = 'No error code avaiable';

        }

    }elseif(empty($_FILES['fileToUpload']['tmp_name']) || $_FILES['fileToUpload']['tmp_name'] == 'none'){

        $error = 'No file was uploaded..';

    }else{

            $re = $this->up();

            if(!$re){

                $error = 'Up file fail';

            }

            $msg = $re['savename'];    //文件名

            $path = '/upload/bizcoop/'.$msg;    //文件路径

            $size = $re['size'];    //文件大小

    }        

    echo json_encode(array('error'=>$error,'msg'=>$msg,'path'=>$path,'size'=>$size));exit;

}

 

private function up(){ 

    import('@.Org.UploadFile');//将上传类UploadFile.class.php拷到Lib/Org文件夹下

    $upload=new UploadFile();

 

    $upload->maxSize='-1';//默认为-1,不限制上传大小

    $upload->savePath= ICTSPACE_DIST_ROOT_PATH.'/www/upload/bizcoop/';//保存路径

    $upload->saveRule=uniqid;//上传文件的文件名保存规则

    $upload->uploadReplace=true;//如果存在同名文件是否进行覆盖

    $upload->allowExts=array('jpg','jpeg','png','gif');//准许上传的文件类型

    if($upload->upload()){

        $info=$upload->getUploadFileInfo();

        return $info[0];

    }else{

        return false;

        exit;

    } 

}

}

?>

在/Tpl/default/Up/目录下创建index.tpl文件,代码如下:
<div id="content">

<h1>Ajax File Upload Demo</h1>

<img id="loading" style="display: none;" alt="" src="__APP____PUBLIC__/style/img/loading.gif" />

 

<form action="" enctype="multipart/form-data" method="POST" name="form">

<table class="tableForm" cellspacing="0" cellpadding="0">

<thead>

<tr>

<th></th>

</tr>

</thead>

<tbody>

<tr>

<td><input class="input" id="fileToUpload" type="file" name="fileToUpload" size="45" /></td>

</tr>

<tr>

<td><button class="button" id="buttonUpload" onclick="return ajaxFileUpload();">Upload</button></td>

</tr>

</tbody>

<tbody>

<tr>

<td><span>已上传的附件:</span></td>

</tr>

</tbody>

<tfoot></tfoot>

</table>

</form></div>

在/Lib/Org/目录下放入ThinkPHP文件上传类就可以了,有一些插件我们需要到官方下载。

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
php5.3 废弃函数小结
May 16 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
php解析url的三个示例
Jan 20 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 PHP
PHP多个文件上传到服务器实例
Oct 29 #PHP
php跨站攻击实例分析
Oct 28 #PHP
php获取根域名方法汇总
Oct 28 #PHP
3款值得推荐的微信开发开源框架
Oct 28 #PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 #PHP
smarty中js的调用方法示例
Oct 27 #PHP
Smarty中常用变量操作符汇总
Oct 27 #PHP
You might like
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php计算函数执行时间的方法
2015/03/20 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
Python实现的建造者模式示例
2018/08/06 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
python如何实现代码检查
2019/06/28 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
学生思想表现的评语
2014/01/30 职场文书
党员公开承诺事项
2014/03/25 职场文书
骨干教师考核方案
2014/05/09 职场文书
高三语文教学反思
2016/02/16 职场文书
七个Python必备的GUI库
2021/04/27 Python
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers