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

Thinkphp框架实现多文件上传实现代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-21 23:17:06 浏览: 评论:0 

直接在php中的多文件上传我有介绍过很多并且也写过专题了,但是在thinkphp中多文件上传还是头一次碰到了,那么这个thinkphp多文件上传与php会有什么区别与共同点呢?下面我来给大家介绍一个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> 
  4. </ol> 
  5. //或者 
  6. <li><input type='file' name='photo[]'></li> 
  7. <li><input type='file' name='photo[]'></li> 
  8. <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//开源软件:phpfensi.com 
  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己经做好了.

Tags: Thinkphp框架 Thinkphp多文件上传

分享到: