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 GD绘制24小时柱状图
Jun 28 PHP
php 代码优化之经典示例
Mar 24 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 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实现多服务器共享SESSION数据的方法
2007/03/16 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python实现多线程HTTP下载器示例
2017/02/11 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
python中join()方法介绍
2018/10/11 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
python爬虫可以爬什么
2020/06/16 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
行政管理专业推荐信
2013/11/02 职场文书
总经理司机职责
2014/02/02 职场文书
教师考核评语
2014/04/28 职场文书
先进员工获奖感言
2014/08/14 职场文书
党员转正介绍人意见
2015/06/03 职场文书
教师听课学习心得体会
2016/01/15 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书