Heim  >  Artikel  >  Backend-Entwicklung  >  PHP多文件上传类_PHP教程

PHP多文件上传类_PHP教程

WBOY
WBOYOriginal
2016-07-13 10:23:09866Durchsuche

PHP多文件上传类

   PHP多文件上传类

  /*

  多文件上传类

  修改:Linvo 2008-2-15

  */

  class more_file_upload{

  const FILE_PATH='../upfileclass/uploadfile/';

  var file_type;

  var file_type_array;

  var file_type_real_array;

  var file_type_string;

  var file_name;

  var file_size;

  var file_tmp_name;

  var file_error;

  var handledate;

  static totalsize=0;

  function __construct(file_name,file_error,file_size,file_tmp_name,file_type){

  this->handledate=date('m-d-Y');

  if (!empty(file_name)){

  this->file_name = file_name;

  this->file_error = file_error;

  this->file_size = file_size;

  this->file_tmp_name = file_tmp_name;

  this->file_type = file_type;

  this->file_type_array = array('/', 'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png');

  this->file_type_real_array = array(0.1, 'jpg'=>74707370, 'gif'=>7173, 'bmp'=>6677, 'png'=>807871);

  this->show_execute_message(this->file_error,this->file_name,this->file_type,this->file_size);

  }

  }

  function __destruct(){

  this->file_name = NULL;

  this->file_error = NULL;

  this->file_size = NULL;

  this->file_tmp_name = NULL;

  this->file_type = NULL;

  self::totalsize = 0;

  }

  function show_execute_message(smfileerror,smfilename,smfiletype,smfilesize){

  if(smfileerror>0){

  switch (smfileerror){

  case 1: smfilemessage='文件超过服务器的约定大小!';break;

  case 2: smfilemessage='文件超过指定的文件大小!';break;

  case 3: smfilemessage='文件只上传了部分!';break;

  case 4: echo "this->file_name ".'文件上传失败!
';break;

  }

  self::__destruct();

  }else{

  smfiletypeflag = array_search(smfiletype,this->file_type_array);

  //进行真实格式验证

  if(smfiletypeflag != false){

  file = fopen(this->file_tmp_name, "rb");

  bin = fread(file, 10);

  fclose(file);

  strInfo = @unpack("c10chars", bin);

  typeCode = intval(strInfo['chars1'].strInfo['chars2']);

  smfiletypeflag = array_search(typeCode, this->file_type_real_array);

  if(smfiletypeflag == false){ //判断是否是png图片

  typeCode = intval(strInfo['chars2'].strInfo['chars3'].strInfo['chars4']);

  smfiletypeflag = array_search(typeCode, this->file_type_real_array);

  if(smfiletypeflag == false){ //判断是否是jpg图片

  typeCode = intval(strInfo['chars7'].strInfo['chars8'].strInfo['chars9'].strInfo['chars10']);

  smfiletypeflag = array_search(typeCode, this->file_type_real_array);

  }

  }

  }

  if(smfiletypeflag == false){

  smfilemessage='文件类型不对,请核实!';

  self::__destruct();

  }else{

  resflag = this->move_file(this->file_tmp_name,this->file_name);

  if (resflag == 1){

  smfilemessage = '文件上传成功!';

  self::totalsize += intval(smfilesize);

  self::__destruct();

  }else{

  smfilemessage = '文件上传失败!';

  self::__destruct();

  }

  }

  }

  smfilesizeformat = this->size_BKM(smfilesize);

  echo '

  '.smfilename.'

  '.smfiletype.'

  '.smfilesizeformat.'

  '.smfilemessage.'

  ';

  }

  function move_file(mvfiletmp,mvfilename){ //移动文件

  mvfilenamearr = explode('.',basename(mvfilename));

  mvfilenamearr[0] = this->rand_string();

  mvfilename = implode('.',mvfilenamearr);

  if (is_uploaded_file(mvfiletmp)){

  uploadfile = self::FILE_PATH."mvfilename";

  result = move_uploaded_file(mvfiletmp,uploadfile);

  return result;

  }

  }

  function rand_string(){

  string = md5(uniqid(rand().microtime()));

  return string;

  }

  function size_BKM(size){ // B/KB/MB单位转换

  if(size

  {

  size_BKM = (string)size . " B";

  }

  elseif(size

  {

  size_BKM = number_format((double)(size / 1024), 1) . " KB";

  }else

  {

  size_BKM = number_format((double)(size / (1024*1024)),1)." MB";

  }

  return size_BKM;

  }

  }

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/845129.htmlTechArticlePHP多文件上传类 PHP多文件上传类 /* 多文件上传类 修改:Linvo 2008-2-15 */ class more_file_upload{ const FILE_PATH='../upfileclass/uploadfile/'; var file_type; v...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn