当前位置:首页 > CMS教程 > Thinkphp > 列表

Thinkphp多文件上传实现方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-20 10:08:25 浏览: 评论:0 

这篇文章主要介绍了Thinkphp多文件上传实现方法,是非常实用的技巧,需要的朋友可以参考下

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

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

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

改为代码如下:

  1. <li><input type='file' name='photo1'></li> 
  2. <li><input type='file' name='photo2'></li> 
  3. <li><input type='file' name='photo3'></li> 

或者代码如下:

  1. <li><input type='file' name='photo[]'></li> 
  2. <li><input type='file' name='photo[]'></li> 
  3. <li><input type='file' name='photo[]'></li> 

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

html代码如下:

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

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

model代码:

  1. protected $info''
  2.  
  3. protected $_auto = array
  4. array('image','upload',3,callback),//自动完成方法 
  5. array('video','videoupload',3,callback), //自动完成方法 
  6. );//自动填充上传图片生成缩略图 
  7. protected function upload(){ 
  8. $var = $_FILES['image']['name']; 
  9. import('ORG.Net.UploadFile'); 
  10. $upload = new UploadFile(); 
  11. $upload->saveRule  = time; 
  12. $upload->allowExts  = array('jpg''gif''png''zip','flv'); 
  13. $upload->thumb = true; 
  14. //视频路径。。。只支持flv后缀, 
  15. $upload->videopath = './Public/upload/Video/'
  16. $upload->savePath =  './Public/upload/images/'
  17. $upload->thumbPrefix = '250_115_,150_110_,213_156_'
  18. $upload->thumbMaxWidth='250,150,213'
  19. $upload->thumbMaxHeight='115,110,156'
  20. if(!in_array('',$var) || !in_array('',$_FILES['video']['name'])){ 
  21. if(!$upload->upload()) { 
  22. echo $upload->getErrorMsg();die
  23. }else
  24. $this->info =  $upload->getUploadFileInfo(); 
  25. if(!in_array('',$var) &amp;&amp; !in_array('',$_FILES['video']['name'])){ 
  26. return $this->info[1]['savename']; 
  27. }elseif(!in_array('',$var)){ 
  28. return $this->info[0]['savename']; 
  29. }else
  30. return false; 
  31.  
  32. }else
  33. return flase; 
  34. //上传视频 
  35. protected function videoupload(){ 
  36. if(!in_array('',$var) &amp;&amp; !in_array('',$_FILES['video']['name'])){ 
  37. return $this->info[0]['savename']; 
  38. }elseif(!in_array('',$_FILES['video']['name'])){ 
  39. return $this->info[1]['savename']; 
  40. }else
  41. return false; 
  42.  

文章最后我来分析一下多文件上传原理吧,先来看看html代码:

  1. <li><input type='file' name='photo[]'></li> 
  2. <li><input type='file' name='photo[]'></li> 
  3. <li><input type='file' name='photo[]'></li> 

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

  1. protected $_auto = array
  2. array('image','upload',3,callback),//自动完成方法 
  3. array('video','videoupload',3,callback), //自动完成方法 
  4. );//自动填充上传图片生成缩略图 

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

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

Tags: Thinkphp多文件上传

分享到: