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 5.0 Pear安装方法
Dec 06 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php简单操作mysql数据库的类
Apr 16 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
关于vue面试题汇总
2018/03/20 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
网上开店必备创业计划书
2014/01/26 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
三八妇女节活动总结
2014/05/04 职场文书
应届毕业生自荐信
2014/05/28 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
会议通知格式范文
2015/04/15 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
国家助学金受助感言
2015/08/01 职场文书