文件上传类(cls_upload.php)

Source:phpbone.com  Author:IT柏拉图
2013-11-25

    cls_upload适合自由定义上传单个文件的情况,如果要批量上传或者按规范性的目录上传文件,建议使用pub_media_dlg定义的上传方法,更加简便,并且对文件上传类型处理得更规范。
    一、cls_upload使用方法:

  1. $upload_config = array
  2. 'upload_path' => PATH_ROOT.'/uploads',    //要使用绝对路径 
  3. 'type_limit' =>  array('jpg''gif')       //文件类型限制 
  4. 'size_limit' =>  1024 * 1024,              //文件大小限制,不限制填写0 
  5. ); 
  6. try { 
  7.     $upload = new cls_upload( $upload_config ); 
  8.     $filename = $upload->upload('upfile');   //文件表单不允许为数组,如upfile[] 
  9. }  
  10. catch( Exception $e ) 
  11.     echo "上传错误,原因:".$e->getMessage(); 

返回的文件名包含系统生成的文件名和当天的日期目录
即是 date('Ymd').'/filename.ext';

    使用这个上传类,针对需要上传某些特殊文件适用,但由于上传文件的目录完全由用户自行控制,这样文件保存可能会比较混乱,因此框架针对fck编辑器的对话框使用,封装了另一个更规范的类,如无特殊需要都建议用pub_media_dlg这个类的上传方法上传文件。

二、pub_media_dlg类里的上传接口
    pub_media_dlg原本是定义给fck的图片、附件等浏览上传的对话框使用的接口,不过这个类里定义的两个上传方法,更适合直接使用。
1、上传单个文件
pub_media_dlg::pub_media_dlg::uploadfile($url, $media_type=10, $formname='uploadfile', $use_oldname = false)
$url  此项是文件浏览对话框里浏览的路径,对于一般调用,此项直接用空值即可。
$media_type  媒体类型  1 图片 2 多媒体文件  3 软件(其它类型附件) , 10 不限制(也受1/2/3类型限定),这些参数可以在“系统配置参数”里修改。
$formname  表单名,只适合非数组名的上传表单。
$use_oldname  是否使用原始上传的文件名
-------------------------------
返回值:array('path' =>文件路径, 'filename' => 文件名, 'ext' => 扩展名)
示例:

  1. try 
  2.     $filenames = pub_media_dlg::uploadfile('', 1, 'imgfile'); 
  3.     $imgurl = $filenames['path'].'/'.$filenames['filename']; 
  4.     echo "<img src='{$imgurl}'>"
  5. catch(Exception $e
  6.     echo "上传文件失败:".$e->getMessage(); 



2、上传多个文件(表单名为数组,即 name='uploadfile[]')
pub_media_dlg::uploadfiles($url, $media_type=10, $formname='uploadfile')
$url, $media_type 选项同上
$formname   表单名(表单名应该是数组类型即是name='uploadfile[]',但调用此函数时,直接用'uploadfile'即可)
-------------------------------
返回值:array( 0 => array('path' =>文件路径, 'filename' => 文件名, 'ext' => 扩展名) ... )
如果多个上传表单里,有其中某些没有文件或上传不成功,将不会返回这个表单的数据,例:

  1. $muti_files = pub_media_dlg::uploadfiles('', 1, 'thumb'); 
  2.  foreach($req::files['thumb']['tmp_name'as $key => $val
  3.   { 
  4.      if( !emptyempty($muti_files[$key]) ) { 
  5.             $upfiles$key ] = $muti_files[$key]['path'] . '/' . $muti_files[$key]['filename']; 
  6.       } 
  7.  } 


分享到: