Thinkphp多文件上传实现方法


Posted in PHP onOctober 31, 2014

本文实例讲述了Thinkphp多文件上传实现方法,分享给大家供大家参考。具体实现方法如下:

Thinkphp手册中对于多文件上传描述的很清楚:如果需要使用多个文件,只需要修改表单,把

<input type='file' name='photo'>

改为
<li><input type='file' name='photo1'></li>

<li><input type='file' name='photo2'></li>

<li><input type='file' name='photo3'></li>

或者

<li><input type='file' name='photo[]'></li>

<li><input type='file' name='photo[]'></li>

<li><input type='file' name='photo[]'></li>

暂且自己的上传表单域为两个,一个上传图片,一个上传视频。字段名为image、video。
html代码如下

图片:<input type="file" name="image[]">

 

视频:<input type="file" name="video[]">

model代码:
protected $info= '';

 

protected $_auto = array(

array('image','upload',3,callback),//自动完成方法

array('video','videoupload',3,callback), //自动完成方法

);//自动填充上传图片生成缩略图

protected function upload(){

$var = $_FILES['image']['name'];

import('ORG.Net.UploadFile');

$upload = new UploadFile();

$upload->saveRule  = time;

$upload->allowExts  = array('jpg', 'gif', 'png', 'zip','flv');

$upload->thumb = true;

//视频路径。。。只支持flv后缀,

$upload->videopath = './Public/upload/Video/';

$upload->savePath =  './Public/upload/images/';

$upload->thumbPrefix = '250_115_,150_110_,213_156_';

$upload->thumbMaxWidth='250,150,213';

$upload->thumbMaxHeight='115,110,156';

if(!in_array('',$var) || !in_array('',$_FILES['video']['name'])){

if(!$upload->upload()) {

echo $upload->getErrorMsg();die;

}else{

$this->info =  $upload->getUploadFileInfo();

if(!in_array('',$var) && !in_array('',$_FILES['video']['name'])){

return $this->info[1]['savename'];

}elseif(!in_array('',$var)){

return $this->info[0]['savename'];

}else{

return false;

}

 

}

}else{

return flase;

}

}

//上传视频

protected function videoupload(){

if(!in_array('',$var) && !in_array('',$_FILES['video']['name'])){

return $this->info[0]['savename'];

}elseif(!in_array('',$_FILES['video']['name'])){

return $this->info[1]['savename'];

}else{

return false;

}

 

}

文章最后我来分析一下多文件上传原理吧,先来看看html代码
<li><input type='file' name='photo[]'></li>

<li><input type='file' name='photo[]'></li>

<li><input type='file' name='photo[]'></li>

这种就是把表单变量定义为数组,在php中数组特殊变量它可以存储多个不定长的内容,所以我们就可以自定多文件上传框了,那么在php处理时我们要如何操作,下面看例子。
protected $_auto = array(

array('image','upload',3,callback),//自动完成方法

array('video','videoupload',3,callback), //自动完成方法

);//自动填充上传图片生成缩略图

这个是告诉thinkphp是数组变量了,并不需要像原生态的php中来判断遍历数组长度再一个个上传的代码了,因为了thinkphp己经做好了。

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
PHP 中的类
Oct 09 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
php excel类 phpExcel使用方法介绍
Aug 21 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
微信API接口大全
Apr 15 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
laravel框架使用极光推送消息操作示例
Feb 15 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 #PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 #PHP
Laravel 4 初级教程之安装及入门
Oct 30 #PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 #PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 #PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 #PHP
ThinkPHP模板中数组循环实例
Oct 30 #PHP
You might like
Zend引擎的发展 [15]
2006/10/09 PHP
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
详解JavaScript树结构
2017/01/09 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
python单例模式实例分析
2015/04/08 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python常见异常分类与处理方法
2017/06/04 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
个人简历自我鉴定
2013/10/11 职场文书
师范生自荐信
2013/10/27 职场文书
优秀班集体申报材料
2014/12/25 职场文书
校本课程教学计划
2015/01/19 职场文书
办公室主任岗位职责
2015/01/31 职场文书
单位病假条范文
2015/08/17 职场文书
2016年感恩节寄语
2015/12/07 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis