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 源代码压缩小工具
Dec 22 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
使用php实现截取指定长度
Aug 06 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
php实现RSA加密类实例
Mar 26 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP中cookie知识点学习
May 06 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 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/01/16 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
js实现表格字段排序
2014/02/19 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
python算法学习之基数排序实例
2013/12/18 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Django设置Postgresql的操作
2020/05/14 Python
木马的传播途径主要有哪些
2016/04/08 面试题
中文专业求职信
2014/06/20 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
预备党员表决心的话
2015/09/22 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书