php框架

 首页 > php框架 > ThinkPHP > Thinkphp框架实现多文件上传实现代码 - Thinkphp

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

分享到:
【字体:
导读:
          直接在php中的多文件上传我有介绍过很多并且也写过专题了,但是在thinkphp中多文件上传还是头一次碰到了,那么这个thinkphp多文件上传与php会有什么区别与共同点呢?下面我来给大家介绍...

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

直接在php中的多文件上传我有介绍过很多并且也写过专题了,但是在thinkphp中多文件上传还是头一次碰到了,那么这个thinkphp多文件上传与php会有什么区别与共同点呢?下面我来给大家介绍一个Thinkphp框架实现多文件上传吧,希望对各位会有点帮助.

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

改为:

  1. 'file' name='photo1'>
  2.  
  3. 'file' name='photo2'>
  4.  
  5. 'file' name='photo3'>
  6.  
 
  • //或者 
  • 'file' name='photo[]'>
  •  
  • 'file' name='photo[]'>
  •  
  • 'file' name='photo[]'>
  •  

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

    html代码如下:

    图片:

    视频:

    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) && !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) && !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. 'file' name='photo[]'>
    2.  
    3. 'file' name='photo[]'>
    4.  
    5. 'file' name='photo[]'>
    6.  

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

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

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

    分享到:
    不用封装 SQL, HTML 等领域语言了吧? - ...
    不用封装 SQL, HTML 等领域语言了吧? 领域语言就是像 SQL,HTML,CSS 等的可以完成某一领域功能的特定领域语言. 在 ThinkPHP 框架中,使用 Model 类封装数据库操作行为,定义了若干方法以进行数据库操作: where,table,data,field,order,limit,group,having,join ... 想表达的含意就是开发人员...
    ThinkPHP文件上传类的分享 - Thinkphp
    ThinkPHP文件上传类的分享 上传类使用ORG类库包中的Net.UpdateFile类,最新版本的上传类包含的功能如下,有些功能需要结合ThinkPHP系统其他类库. 1.基本上传功能 2.支持批量上传 3.支持生成图片缩略图 4. 自定义参数上传 5.上传检测(包括大小、后缀和类型) 6.支持上传类型、附件大小、...
    •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
    • 在这里……