PHP多檔案上傳類

來源:互聯網
上載者:User

   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 < 1024)

  {

  size_BKM = (string)size . " B";

  }

  elseif(size < (1024 * 1024))

  {

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

  }else

  {

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

  }

  return size_BKM;

  }

  }

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。