+ -
当前位置:首页 → 问答吧 → 文件上传完整方法(附实例)

文件上传完整方法(附实例)

时间:2008-08-13

来源:互联网

[php]
/*
*  $file_input 上传文件选择框的名称
*  $store_uploaded_files_directory  存储上传文件的目录
*  $arr_extensions 可以上传的文件的后缀名(此参数为数组)
*  $max_size 定义可以上传文件的大小,单位为字节
*/
function upload(
    $file_input,
    $store_uploaded_files_directory = '',
    $arr_extensions = '',
    $max_size = 2000000
    )
  {
$file_name = $_FILES[$file_input]['name'];
if(empty($file_name)) return "请选择上传文件!";
else
{
  $file_tmp_name = $_FILES[$file_input]['tmp_name'];
  $file_type = $_FILES[$file_input]['type'];
  $file_size = $_FILES[$file_input]['size'];

  /*
  *  $_FILES[$file_input]['error']意义:
  *  0表示上传成功  1表示超过了upload_max_filesize设定的值
  *  2表示超过了HTML中MAX_FILE_SIZE设定的值  3表示文件只有部分被上传
  *  4表示没有文件被上传
  */
      $file_error = $_FILES[$file_input]['error'];
 
  $file_ext = substr(strrchr($file_name,"."),1);  //获取上传文件的扩展名
  $uploaded_full_path = '';

  /*
  *  增加容错性,当$store_uploaded_files_directory
  *  没有带反斜框时,自动加上反斜杠
  */
  if(strrpos($store_uploaded_files_directory,"/") + 1 == strlen($store_uploaded_files_directory))
  {
  $uploaded_full_path = $store_uploaded_files_directory . $file_name;
  }
  else
  {
  $uploaded_full_path = $store_uploaded_files_directory . '/' . $file_name;
  }

  /*
  *  调用该函数时若没有定义可上传文件扩展名数组,则扩展名数组默认为以下数组
  */
  if(empty($arr_extensions))
  $arr_extensions = array('txt','doc','rar','zip','chm','ppt','jpg','mp3','wma');
 
  if(!in_array(strtolower($file_ext),$arr_extensions))
  return "只能上传以下文件类型:" . join(",",$arr_extensions);
  else if(file_exists($uploaded_full_path))
  return "同名文件已存在!";
  else if($file_size > $max_size)
  {
  $max_size_m = $max_size / 1000000;
  return "上传文件过大,最大只能上传" . $max_size_m . "M";
  }
  else if($file_error == 1)
  {
  return "上传文件超过了upload_max_filesize设定的大小!";
  }
  else if(is_uploaded_file($file_tmp_name))
  {
  if(move_uploaded_file($file_tmp_name,$uploaded_full_path))
  {
    return "文件上传成功!";
  }
  else return "文件复制失败!";
  }
}
  }
[/php]
描述:文件上传实例
附件: file_upload.rar (2 K) 下载次数:11

作者: csch   发布时间: 2008-08-13

作者: flyroc   发布时间: 2010-08-23