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调用Twitter的RSS的实现代码
Mar 10 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
php的一些小问题
Jul 03 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
PHP 快速排序算法详解
Nov 10 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
js特殊字符过滤的示例代码
2014/03/05 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
python之Socket网络编程详解
2016/09/29 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
努比亚手机官网:nubia
2016/10/06 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
车间机修工岗位职责
2014/02/28 职场文书
爱牙日活动总结
2014/08/29 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
PHP策略模式写法
2021/04/01 PHP
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers