澳门新葡萄京官网首页文件上传类

使用示例:upload.php?phpinclude_once “upload.class.php”;if ($Submit !=
”){$fileArr[‘file’] = $file;$fileArr[‘name’] =
$file_name;$fileArr[‘size’] = $file_size;$fileArr[‘type’] =
$file_type;/** 所允许上传的文件类型 */$filetypes =
array(‘gif’,’jpg’,’jpge’,’png’);/** 文件上传目录 */$savepath =
“/usr/htdocs/upload/”;/** 没有最大限制 0 无限制*/$maxsize = 0;/**
覆盖 0 不允许1 允许 */$overwrite = 0;$upload = new upload($fileArr,
$file_name, $savepath, $filetypes, $overwrite, $maxsize);if
(!$upload-run()){echo”上传失败”.$upload-errmsg();}}?htmlheadtitle文件上传/titlemeta
“Content-Type” content=”text/html; charset=gb2312″/headbody
bgcolor=”#FFFFFF” text=”#000000″form name=”form1″
enctype=”multipart/form-data” method=”post” action=””input type=”file”
name=”file”input type=”submit” name=”Submit”
value=”Submit”/form/body/html上传类upload.class.php?php////
+———————————————————————-+//
| 文件上传|// | 本代码仅供学习讨论之用,允许随意修改|// | Author:
whxbb(whxbb@21cn.com)|//
+———————————————————————-+////
$Id: upload.class.php,v 1.0 2001/10/14 14:06:57 whxbb Exp
$//$UPLOAD_CLASS_ERROR = array( 1 = ‘不允许上传该格式文件’,2 =
‘目录不可写’,3 = ‘文件已存在’,4 = ‘不知名错误’,5 = ‘文件太大’);/***
Purpose* 文件上传** Example*$fileArr[‘file’] =
$file;$fileArr[‘name’] = $file_name;$fileArr[‘size’] =
$file_size;$fileArr[‘type’] = $file_type;//
所允许上传的文件类型$filetypes = array(‘gif’,’jpg’,’jpge’,’png’);//
文件上传目录 $savepath = “/usr/htdocs/upload/”;// 没有最大限制 0
无限制$maxsize = 0;// 覆盖 0 不允许1 允许 $overwrite = 0;$upload = new
upload($fileArr, $file_name, $savepath, $filetypes, $overwrite,
$maxsize);if (!$upload-run()){echo$upload-errmsg();}** @author
whxbb(whxbb@21cn.com)* @version 0.1*/class upload{var $file;var
$file_name;var $file_size;var $file_type;/** 保存名 */var
$savename;/** 保存路径 */var $savepath;/** 文件格式限定 */var
$fileformat = array();/** 覆盖模式 */var $overwrite = 0;/**
文件最大字节 */var $maxsize = 0;/** 文件扩展名 */var $ext;/**
错误代号 */var $errno;/*** 构造函数* @param $fileArr 文件信息数组
‘file’ 临时文件所在路径及文件名’name’ 上传文件名’size’
上传文件大小’type’ 上传文件类型* @param savename 文件保存名* @param
savepath 文件保存路径* @param fileformat 文件格式限制数组* @param
overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖* @param maxsize
文件最大尺寸*/function upload($fileArr, $savename, $savepath,
$fileformat, $overwrite = 0, $maxsize = 0) {$this-file =
$fileArr[‘file’];$this-file_name =
$fileArr[‘name’];$this-file_size =
$fileArr[‘size’];$this-file_type =
$fileArr[‘type’];$this-get_ext();$this-set_savepath($savepath);$this-set_fileformat($fileformat);$this-set_overwrite($overwrite);$this-set_savename($savename);$this-set_maxsize($maxsize);}/**
上传*/function run(){/** 检查文件格式 */if
(!$this-validate_format()){$this-errno = 1;return false;}/**
检查目录是否可写 */if(!@is_writable($this-savepath)){$this-errno =
2;return false;}/** 如果不允许覆盖,检查文件是否已经存在
*/if($this-overwrite == 0 &&
@file_exists($this-savepath.$this-savename)){$this-errno = 3;return
false;}/** 如果有大小限制,检查文件是否超过限制 */if ($this-maxsize
!= 0 ){if ($this-file_size $this-maxsize){$this-errno = 5;return
false;}}/** 文件上传 */if(!@copy($this-file,
$this-savepath.$this-savename)){$this-errno = 4;return false;}/**
删除临时文件 */$this-destory();return true;}/*** 文件格式检查*
@access protect*/function validate_format(){if
(!is_array($this-fileformat))// 没有格式限制return true;$ext =
strtolower($this-ext);reset($this-fileformat);while(list($var, $key) =
each($this-fileformat)){if (strtolower($key) == $ext)return
true;}reset($this-fileformat);return false;}/*** 获取文件扩展名*
access public*/function get_ext(){$ext = explode(“.”,
$this-file_name);$ext = $ext[count($ext) – 1];$this-ext =
$ext;}/*** 设置上传文件的最大字节限制* @param $maxsize
文件大小(bytes) 0:表示无限制* @access public*/function
set_maxsize($maxsize){$this-maxsize = $maxsize;}/*** 设置覆盖模式*
@param 覆盖模式 1:允许覆盖 0:禁止覆盖* @access public*/function
set_overwrite($overwrite){$this-overwrite = $overwrite;}/***
设置允许上传的文件格式* @param $fileformat 允许上传的文件扩展名数组*
@access public*/function set_fileformat($fileformat){$this-fileformat
= $fileformat;}/*** 设置保存路径* @param $savepath 文件保存路径:以
“/” 结尾* @access public*/function
set_savepath($savepath){$this-savepath = $savepath;}/***
设置文件保存名* @savename
保存名,如果为空,则系统自动生成一个随机的文件名*澳门新葡萄京官网首页, @access
public*/function set_savename($savename){if ($savename == ”)//
如果未设置文件名,则生成一个随机文件名{srand ((double) microtime() *
1000000);$rnd = rand(100,999);$name = date(‘Ymdhis’) + $rnd;$name =
$name.”.”.$this-ext;} else {$name = $savename;}$this-savename =
$name;}/*** 删除文件* @param $file 所要删除的文件名* @access
public*/function del($file){if(!@unlink($file)){$this-errno = 3;return
false;}return true;}/*** 删除临时文件* @access proctect*/function
destory(){$this-del($this-file);}/*** 得到错误信息* @access public*
@return error msg string or false*/function errmsg(){global
$UPLOAD_CLASS_ERROR;if ($this-errno == 0)return false;elsereturn
$UPLOAD_CLASS_ERROR[$this-errno];}}?

使用示例:upload.phperrmsg();}}?>

 */

文件上传

 代码如下

上传类upload.class.php

class upfile{
 //上传文件信息
 var $filename;
 // 保存名
 var $savename;
 // 保存路径
 var $savepath;
 // 文件格式限定,为空时不限制格式
 var $format = “”;
 // 覆盖模式
 var $overwrite = 0;
 /* $overwrite = 0 时不覆盖同名文件
  * $overwrite = 1 时覆盖同名文件
  */
 //文件最大字节
 var $maxsize = 210000000;
 //文件扩展名
 var $ext;
 
 /* 构造函数
  * $path 保存路径
  * $format 文件格式(用逗号分开)
  * $maxsize 文件最大限制,0为默认值
  * $over 复盖参数
  */
 function upfile($path = “./”, $format = “”, $maxsize = 0, $over = 0){
  if(!file_exists($path)){
   $this->halt(“指定的目录[ “.$path.” ]不存在。”);
  }
 
  if(!is_writable($path)){
   $this->halt(“指定的目录[ “.$path.” ]不可写。”);
  }
  $path = str_replace(“”,”/”, $path);
  $this->savepath = substr($path, -1) == “/” ? $path :
$path.”/”;//保存路径
 
  $this->overwrite = $over;//是否复盖相同名字文件
  $this->maxsize = !$maxsize ? $this->maxsize :
$maxsize;//文件最大字节
  $this->format = $format;
 }
 
 /*
  * 功能:检测并组织文件
  * $form      文件域名称
  * $filename
上传文件保存名称,为空或者上传多个文件时由系统自动生成名称
  * $filename =
1,并上传多个同文件域名称文件时,则文件保存为原上传文件名称。
  */
 function upload($form, $filename = “”){
  if(!isset($_files[$form])){
   $this->halt(“指定的文件域名称不存在。”);
  }else{
   $filear = $_files[$form];
  }
 
  if(is_array($filear[“name”])){//上传同文件域名称多个文件
   $outfile = array();//返回文件名称数组
   for($i = 0; $i < count($filear[“name”]); $i++){
    $ar[“name”] = $filear[“name”][$i];
    $ar[“tmp_name”] = $filear[“tmp_name”][$i];
    $ar[“size”] = $filear[“size”][$i];
    $ar[“error”] = $filear[“error”][$i];
   
    $this->getext($ar[“name”]);//取得扩展名
    $this->set_savename($filename == 1 ? $ar[“name”] :
“”);//设置保存文件名
    $outfile[] = $this->copyfile($ar);
   }
   return $outfile;
  }else{//上传单个文件
   $this->getext($filear[“name”]);//取得扩展名
   $this->set_savename($filename);//设置保存文件名
   return $this->copyfile($filear);
  }
  return false;
 }
 
 /*
  * 功能:检测并复制上传文件
  * $filear 上传文件资料数组
  */
 function copyfile($filear){
 
  if($filear[“size”] > $this->maxsize){
   $this->halt(“上传文件 “.$filear[“name”].”
大小超出系统限定值[“.$this->maxsize.” 字节],不能上传。”);
  }
 
  if(!$this->overwrite && file_exists($this->savename)){
   $this->halt($this->savename.” 文件名已经存在。”);
  }
 
  if(!$this->chkext()){
   $this->halt($this->ext.” 文件格式不允许上传。”);
  }
 
  if(!copy($filear[“tmp_name”],
$this->savepath.$this->savename)){
   $errors =
array(0=>”文件上传成功”,
       1=>”上传的文件超过了
php教程.ini 中
upload_max_filesize 选项限制的值。 “,
       2=>”上传文件的大小超过了 html 表单中 max_file_size
选项指定的值。 “,
       3=>”文件只有部分被上传。 “,
       4=>”没有文件被上传。 “);
   $this->halt($errors[$filear[“error”]]);
  }else{
   @unlink($filear[“tmp_name”]);//删除临时文件
   return $this->savename;//返回上传文件名
  }
 }
 
 /*
  * 功能: 取得文件扩展名
  * $filename 为文件名称
  */
 function getext($filename){
  if($filename == “”) return;
 
  $ext = explode(“.”, $filename);
 
  $this->ext = $ext[count($ext)-1];
 }
 
 /*
  * 功能:检测文件类型是否允许
  */
 function chkext(){
  if($this->format == “” || in_array(strtolower($this->ext),
explode(“,”, strtolower($this->format)))) return true;
  else return false;
 }
 /*
  * 功能: 设置文件保存名
  * $savename 保存名,如果为空,则系统自动生成一个随机的文件名
  */
 function set_savename($savename = “”){
  if ($savename == “”) { // 如果未设置文件名,则生成一个随机文件名
   srand ((double) microtime() * 1000000);
   $rnd = rand(100,999);
   $name = date(‘u’) + $rnd;
   $name = $name.”.”.$this->ext;
  } else {
   $name = $savename;
  }
  $this->savename = $name;
 }
 
 /*
  * 功能:错误提示
  * $msg 为输出信息
  */
 function halt($msg){
  echo “<strong>注意:</strong>”.$msg;
  exit;
 }
 
/*
*
*主要用来删除已上传的文件,不返回
*参数$file :文件路径
*/

‘不允许上传该格式文件’,2 => ‘目录不可写’,3 => ‘文件已存在’,4 =>
‘不知名错误’,5 => ‘文件太大’);/*** Purpose* 文件上传**
Example*$fileArr[‘file’] = $file;$fileArr[‘name’] =
$file_name;$fileArr[‘size’] = $file_size;$fileArr[‘type’] =
$file_type;// 所允许上传的文件类型$filetypes =
array(‘gif’,’jpg’,’jpge’,’png’);// 文件上传目录 $savepath =
“/usr/htdocs/upload/”;// 没有最大限制 0 无限制$maxsize = 0;// 覆盖 0
不允许1 允许 $overwrite = 0;$upload = new upload($fileArr, $file_name,
$savepath, $filetypes, $overwrite, $maxsize);if
{echo$upload->errmsg();}** @author whxbb* @version 0.1*/class
upload{var $file;var $file_name;var $file_size;var $file_type;/**
保存名 */var $savename;/** 保存路径 */var $savepath;/**
文件格式限定 */var $fileformat = array();/** 覆盖模式 */var
$overwrite = 0;/** 文件最大字节 */var $maxsize = 0;/** 文件扩展名
*/var $ext;/** 错误代号 */var $errno;/*** 构造函数* @param
$fileArr 文件信息数组 ‘file’ 临时文件所在路径及文件名’name’
上传文件名’size’ 上传文件大小’type’ 上传文件类型* @param savename
文件保存名* @param savepath 文件保存路径* @param fileformat
文件格式限制数组* @param overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖*
@param maxsize 文件最大尺寸*/function upload($fileArr, $savename,
$savepath, $fileformat, $overwrite = 0, $maxsize = 0) {$this->file =
$fileArr[‘file’];$this->file_name =
$fileArr[‘name’];$this->file_size =
$fileArr[‘size’];$this->file_type =
$fileArr[‘type’];$this->get_ext();$this->set_savepath;$this->set_fileformat;$this->set_overwrite;$this->set_savename;$this->set_maxsize;}/**
上传*/function run(){/** 检查文件格式 */if
(!$this->validate_format{$this->errno = 1;return false;}/**
检查目录是否可写 */if(!@is_writable{$this->errno = 2;return
false;}/** 如果不允许覆盖,检查文件是否已经存在
*/if($this->overwrite == 0 &&
@file_exists($this->savepath.$this->savename)){$this->errno =
3;return false;}/** 如果有大小限制,检查文件是否超过限制 */if {if
($this->file_size > $this->maxsize){$this->errno = 5;return
false;}}/** 文件上传 */if(!@copy($this->file,
$this->savepath.$this->savename)){$this->errno = 4;return
false;}/** 删除临时文件 */$this->destory();return true;}/***
文件格式检查* @access protect*/function validate_format(){if
(!is_array// 没有格式限制return true;$ext = strtolower;reset;while =
each{if == $ext)return true;}reset;return false;}/***
获取文件扩展名* access public*/function get_ext(){$ext = explode(“.”,
$this->file_name);$ext = $ext[count – 1];$this->ext =
$ext;}/*** 设置上传文件的最大字节限制* @param $maxsize 文件大小
0:表示无限制* @access public*/function set_maxsize{$this->maxsize
= $maxsize;}/*** 设置覆盖模式* @param 覆盖模式 1:允许覆盖
0:禁止覆盖* @access public*/function
set_overwrite{$this->overwrite = $overwrite;}/***
设置允许上传的文件格式* @param $fileformat 允许上传的文件扩展名数组*
@access public*/function set_fileformat{$this->fileformat =
$fileformat;}/*** 设置保存路径* @param $savepath 文件保存路径:以
“/” 结尾* @access public*/function set_savepath{$this->savepath =
$savepath;}/*** 设置文件保存名* @savename
保存名,如果为空,则系统自动生成一个随机的文件名* @access
public*/function set_savename{if //
如果未设置文件名,则生成一个随机文件名{srand * 1000000);$rnd =
rand;$name = date + $rnd;$name = $name.”.”.$this->ext;} else {$name =
$savename;}$this->savename = $name;}/*** 删除文件* @param $file
所要删除的文件名* @access public*/function del{if{$this->errno =
3;return false;}return true;}/*** 删除临时文件* @access
proctect*/function destory(){$this->del;}/*** 得到错误信息*
@access public* @return error msg string or false*/function
errmsg(){global $UPLOAD_CLASS_ERROR;if return false;elsereturn
$UPLOAD_CLASS_ERROR[$this->errno];}}?>

function delete_file($file)
{
    if (file_exists($file))
    {
        $delete = chmod ($file, 0777);
        $delete = unlink($file);
        if(file_exists($file))
        {
            $filesys =
eregi_replace(“/”,””,$file);
            $delete = system(“del $filesys”);
            clearstatcache();
            if(file_exists($file))
            {
                $delete = chmod ($file, 0777);
                $delete = unlink($file);
                $delete = system(“del $filesys”);
            }
        }
        clearstatcache();
    }
}
 
 
}

/*
使用方法

* 文件上传类
 upfile($path = “./”, $format = “”, $maxsize = 0, $over = 0)  :构造函数
参数(保存路径,上传格式,上传最大字节数,是否覆盖同名文件)
 
 
 
 * 实例:
 
<form action=”f.php” method=”post”
enctype=”multipart/form-data”>
 
//上传单文件
  if(isset($_files[“files”]))
  {
     $filear=array();
     $filear = $f->upload(“files”);//返回上传后文件名
  echo $filear;
 
  }
 

 
 

//上传多个不同文件域名称文件

 代码如下

if(isset($_files){
 foreach($_files as $key=>$val)
  $filear[] = $f->upload($key);//返回上传后文件名数组
}

*/

发表评论

电子邮件地址不会被公开。 必填项已用*标注