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 相关文章推荐
十天学会php之第三天
Oct 09 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
PHP经典面试题集锦
Mar 19 PHP
JavaScript实现滚动栏效果的方法
Apr 27 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
基于php判断客户端类型
Oct 14 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP代码重构方法漫谈
Apr 17 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程序的方法小结
2012/02/23 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
python 动态绘制爱心的示例
2020/09/27 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
大学生毕业求职信
2014/06/12 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
2015年服务员工作总结
2015/04/08 职场文书
运动会新闻报道稿
2015/07/22 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis