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
html中select语句读取mysql表中内容
Oct 09 PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
php计算函数执行时间的方法
Mar 20 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
php超快高效率统计大文件行数
Jul 05 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
php实现分页显示
Nov 03 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
PHP7变量处理机制修改
Mar 09 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
Mac下安装vue
2018/04/11 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
JS继承定义与使用方法简单示例
2020/02/19 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
详解python 中in 的 用法
2019/12/12 Python
活动总结书
2014/05/08 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
文明社区申报材料
2014/08/21 职场文书
2014年班组长工作总结
2014/11/20 职场文书
Django drf请求模块源码解析
2021/06/08 Python
java版 联机五子棋游戏
2022/05/04 Java/Android
Python first-order-model实现让照片动起来
2022/06/25 Python