php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>Php编程>文章内容
php程序实现文件上传(单个或多个文件)
来源:收集整理 作者:本站整理 发布时间:2007-12-04  

php程序实现文件上传(单个或多个文件) phpma开源

<?php
/*
     @名称:UPLOAD_CLASS
     @功能:上传文件,可以是单个文件式或数组式
     @作者:袁维
     @版本:V1.0
     @时间:2006-12-3
*/
 class UPLOAD_CLASS
 {
  var $fexts='*';        //允许上传的文件扩展名集合,"*":表示任何文件;格式为:".jpg|.swf|.png"
  var $max_size=0;       //允许的最大文件大小,单位以K. 0:表示任何大小
  var $is_del=false;     //当目标文件存在时是否删除
  var $uploaded_file=''; //已上传成功的文件名,多个用","隔开
  var $input_name;       //FILE控件名称
  /* 功能:构造函数
     参数:$input_name:表单中FILE控件名称,如 <input type="file" name="upfile"> 中的"upfile"
                      也可以控件是数组,如   <input type="file" name="up_file[]">
                                              <input type="file" name="up_file[]">
  */
  function UPLOAD_CLASS($input_name='')phpma开源
  {
   if($input_name == '')
   {
   echo '<b>UPLOAD_CLASS类构造出错:请指定表单中FILE控件的名称!如: $up = new UPLOAD_CLASS("up_file");</b>';
   }
   $this->input_name = $input_name;
  }
  /* 设置最大上传的文件大小 */
  function set_size($max_size)
  {
   $this->max_size = $max_size * 1024;
  }
  /* 设置上传文件的扩展名集合 */
  function set_fexts($exts)
  {
   $this->fexts = $exts;
  }
  /* 设置目标文件存在时是否删除 */
  function set_del($bool)
  {
   $this->is_del = $bool;phpma开源
  }
  /* 功能:上传文件操作
     参数:$dst_file:上传后的目标文件名,如果没有加扩展名则上传时自动加上原文件扩展名.
              如果FILE控件是数组,则 $dst_file 为目标文件个数与上传的文件数匹配的数组,如下:
              array('./img/a.jpg','./img/b.jpg') 也可为 array('./img/a','./img/b')
   返回值: [-1]成功 [0]:没有上传的文件 [1]:文件超过大小 [2]:不是指定的类型
            [3]:目标文件已存在 [4]:目标文件不能写入 [5]:目标文件个数与上传的文件数不匹配
     */
  function upload($dst_file)
  {
   $ay = $_FILES[$this->input_name]['name'];
    if(is_array($ay)) //表单中的FILE控件是数组
   {
    if( !is_array($dst_file) || count($ay) != count($dst_file) ) return 5;
    $tmp_ay = array(); //临时数组保存暂时已上传成功的文件名,用于所有文件没有完全上传成功的情况删除它们
    $ret    = -1;
    foreach($ay as $key=>$val)
       {
       $file_name = $_FILES[$this->input_name]['name'][$key];    //上传的原文件名
       $file_size = $_FILES[$this->input_name]['size'][$key];    //上传后的临时文件名
       $tmp_file  = $_FILES[$this->input_name]['tmp_name'][$key];//文件大小
    if($file_name != '') //该控件上传了文件
    {
     $ret = $this->_upload($file_name,$tmp_file,$file_size,$dst_file[$key]);
     if( $ret != -1 ) //如果文件没有上传成功,就要删除已经上传的文件
     {
      for($i=0; $i<count($tmp_ay); $i++) @unlink($tmp_ay[$i]);
      break;
     }
     $tmp_ay[]=$dst_file[$key];
    }phpma开源
    }//End Foreach
    return $ret;
   }else{
    //---上传单个文件上传
          $file_name = $_FILES[$this->input_name]['name'];    //上传的原文件名
        $tmp_file  = $_FILES[$this->input_name]['tmp_name'];//上传后的临时文件名
             $file_size = $_FILES[$this->input_name]['size'];    //文件大小
    return $this->_upload($file_name,$tmp_file,$file_size,$dst_file);
   }
  }
    /* 功能:得到已上传成功的文件名,多个用","隔开
    参数: $flg [0]:文件名有完整的路径 [1]:文件名不带路径
 */
 function uploaded_files($flg=0)
 {
  $files = '';
  if( $flg == 0 )
  {
   $files = $this->uploaded_file;
  }else{
   $ay=explode(',',$this->uploaded_file);
   for($i=0; $i<count($ay); $i++)
   {
    if( $files == '' )
    {
     $files = basename($ay[$i]);
    }else{
     $files .= ','.basename($ay[$i]);
    }
   }
  }
  return $files;
 }
    /* 得到上传的信息,如果FILE控件是个数组,则返回的是个二维数组,否则返回是一级数组 */
 function &uploadInfo()phpma开源
 {
  $ay=array();
  if(!is_array($_FILES[$input_name]['name']))
  {
     $ay['name']     = $_FILES[$this->input_name]['name'];
     $ay['ext']      = strtolower(strrchr($ay['name'],'.'));
     $ay['type']     = $_FILES[$this->input_name]['type'];
     $ay['size']     = $_FILES[$this->input_name]['size'];
     $ay['tmp_name'] = $_FILES[$this->input_name]['tmp_name'];
  }else{
     foreach($_FILES[$input_name]['name'] as $i=>$val)
     {
      $ay[$i]['name']     = $_FILES[$this->input_name]['name'][$i];
      $ay[$i]['ext']      = strtolower(strrchr($ay[$i]['name'],'.'));
      $ay[$i]['type']     = $_FILES[$this->input_name]['type'][$i];
      $ay[$i]['size']     = $_FILES[$this->input_name]['size'][$i];
      $ay[$i]['tmp_name'] = $_FILES[$this->input_name]['tmp_name'][$i];
     }
  }//End If
  return $ay;
 }
   
 /* 功能: 得到上传的状态,数组包含 总的上传个数 和 真实文件个数(FILE控件数组中选择的文件数)
    返回: $ay['sum']:总的上传个数 $ay['up']:真实文件个数
 */
 function &upload_state()
 {
  $ay=array('sum'=>0,'up'=>0);
  if(!is_array($_FILES[$this->input_name]['name']))
  {
     $ay['sum']++;
     if( $_FILES[$this->input_name]['name'] != '' ) $ay['up']++;
  }else{
     foreach($_FILES[$this->input_name]['name'] as $i=>$val)
     {
               $ay['sum']++;
      if( $_FILES[$this->input_name]['name'][$i] != '' ) $ay['up']++;
     }
  }//End If
  return $ay;
 }
  /* 得到小写的文件扩展名,如".php" */
  function file_ext($file_name)
  {
   return strtolower(strrchr($file_name,"."));
  }
     /* -私有?
phpma开源

(阅读次数:
上一篇:linux系统下常用的shell命令集(五)   下一篇:php访问access的方法{附代码}
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·PHP生成验证码图片的源代码
·PHP会话对(Session)使用入门
·Php部分常见问题总结[bug]
·php正则表达式的快速学习方法
·高手传经:学习PHP重在坚持
·用php生成静态页面的php函数
·PHP对文本数据库的基本操作方法
·用 PHP 读取文件的正确方法
·讲解PHP+MySQL的分页显示示例
·用PHP构建一个简易监视引擎
·我是怎样打造简单的PHP&MYSQL留
·用PHP实现表单验证码登陆校验
  相关文章
·php访问access的方法{附代码}
·PHP程序开发者都应该知道10个项
·推荐:PHP中删除目录的三种方法
·php编程:mysql_affected_rows()
·完整且安全的PHP用户登录系统(转
·如何使得自己编写出安全的PHP代
·Suhosin能加强PHP脚本语言安全性
·mysql_change_user()与mysql_clo
·mysql_connect()与mysql_create_
·巧用php或js获取图片大小,高宽尺
·mysql_db_query()与mysql_query(
·PHP编程让初学者头痛的若干个问

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号