好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

直接在php中的多文件上传我有介绍过很多并且也写过专题了,但是在thinkphp中多文件上传还是头一次碰到了,那么这个thinkphp多文件上传与php会有什么区别与共同点呢?下面我来给大家介绍一个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>  </ol>  //或者   <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 ) &amp;&amp; !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 ) &amp;&amp; !in_array( '' , $_FILES [ 'video' ][ 'name' ])){  return   $this ->info[0][ 'savename' ];  } elseif (!in_array( '' , $_FILES [ 'video' ][ 'name' ])){  return   $this ->info[1][ 'savename' ];  } else {  //开源软件:phpfensi.com   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框架实现多文件上传实现代码 - Thinkphp的详细内容...

  阅读:85次