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 < 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;

  }

  }

时间: 2024-10-30 19:40:09

PHP多文件上传类的相关文章

PHP中codeigniter文件上传类代码实例

  codeigniter文件上传类代码实例 文件上传类 CodeIgniter 的文件上传类允许文件被上传.您可以设置指定上传某类型的文件及指定大小的文件. 处理过程 上传文件普遍的过程: 一个上传文件用的表单,允许用户选择一个文件并上传它. 当这个表单被提交,该文件被上传到指定的目录. 同时,该文件将被验证是否符合您设定的要求. 一旦文件上传成功,还要返回一个上传成功的确认窗口. 这里有一个简短的教程来显示这个过程.此后你将会找到相关的参考信息. 创建上传表单 运用文本编辑器创建一个名为up

经典的PHP文件上传类

在课堂上给大家写了一个经典的文件上传类,灵活性还可以,大家可以参考使用,   上传文件:   <?php /** * author : PHP100.com * date :2012-9-15 经典的文件上传类  **/  if(!empty($_POST['sub'])){   include("up.class.php");      $up = new up($_FILES['up']); //参数,文件流必选,[指定目录,指定大小,指定文件名]可选  }  ?>  

ASP.NET实现的简单易用文件上传类

  这篇文章主要介绍了ASP.NET实现的简单易用文件上传类,本文给出实现代码和使用方法示例,需要的朋友可以参考下 调用方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 UploadFile uf = new UploadFile();   /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认:true),true原始文件名,false系统生成新文件名

功能强大的php文件上传类_php技巧

本文实例为大家分享了php文件上传类,功能很强大,供大家参考,具体内容如下 <?PHP /* *文件上传类 **/ class upfile{ private $file_size;//上传源文件大小 private $file_tem;//上传文件临时储存名 private $file_name;//上传文件名 private $file_type;//上传文件类型 private $file_max_size=2000000;//允许文件上传最大 private $file_folder=&qu

一个经典的PHP文件上传类分享_php实例

文件上传是项目开发中比较常见的功能,但文件上传的过程比较繁琐,只要是有文件上传的地方就需要编写这些复杂的代码.为了能在每次开发中降低功能的编写难度,也为了能节省开发时间,通常我们都会将这些反复使用的一段代码封装到一个类中.帮助开发者在以后的开发中,通过编写几条简单代码就可以实现复杂的文件上传功能.对于基础薄弱的读者,只要会使用本类即可,而对一些喜欢挑战的朋友,可以尝试去读懂它,并能开发一个属于自己的文件上传类. 一.需求分析 要球自定义文件上传类,即在使用非常简便的前提下,又可以完成以下几项功能

PHP多文件上传类实例_php技巧

本文实例讲述了PHP多文件上传类.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?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

PHP文件上传类实例详解_php技巧

本文实例讲述了PHP文件上传类.分享给大家供大家参考,具体如下: 这里演示了FileUpload.class.php文件上传类,其中用到了两个常量,可在网站配置文件中定义: define('ROOT_PATH',dirname(__FILE__)); //网站根目录 define('UPDIR','/uploads/'); //上传主目录 具体代码如下: <?php //上传文件类 class FileUpload { private $error; //错误代码 private $maxsiz

php文件上传类完整实例_php技巧

本文实例讲述了php文件上传类.分享给大家供大家参考,具体如下: /** $file=new class_file($file_array,"flash/"); $file->set_allow_type(array("jpg","jpeg","gif")); $file->is_limit_size(); if(!$file->allow_file_size()){ echo $file->error

非常经典的PHP文件上传类分享_php技巧

文件上传是项目开发中比较常见的功能,但文件上传的过程比较繁琐,只要是有文件上传的地方就需要编写这些复杂的代码.为了能在每次开发中降低功能的编写难度,也为了能节省开发时间,通常我们都会将这些反复使用的一段代码封装到一个类中. <?php /** +----------------------------------------------------------------------------- * 文件上传类 +----------------------------------------