这个例子主要介绍了一个比较通用的文件上传类。当我们实例化这个类的时候可以指定上传路径和允许上传的文件类型。

本例包含两个文件
upload.class.php
test.php

上传类中的属性和方法列表如下图所示:
$path:文件上传路径
$type:允许上传的文件类型
set_type():设置可以上传的文件类型
up():上传处理
Name():得到文件名
_file_type():得到文件类型
_make_dir():创建目录
GetPath():得到路径

以下是upload.class.php源代码:

path = $path;//更新文件类型$this->type = $this->set_type($type);}function set_type($type = "png,jpg,gif,rar,zip,gz") {if (!$type) {$type = "png,jpg,gif,rar,zip,gz";}$type_array = explode(",", $type);$array = array ();foreach ($type_array as $key => $value) {$value = trim($value);if (strlen($value) > 1) {if ((substr($value, 0, 1) != ".")) {$value = "." . $value;}$array[$key] = $value;}}$this->type = implode(",", $array);$mytype = $this->type;return $mytype;}function up($var, $file = "") {if (empty ($var)) {return false;}$this->_make_dir($this->path); #[更新附件路径]$file_name = $this->_check($file);if (!$file_name)$file_name = time(); //如果文件名为空,刚使用时间作为文件名称//检查文件名称是否含有后缀,有则去掉$file_name = strtolower($file_name); //将所有大写改为小写//-----$file_type = $this->_file_type($var);if ($file_type) {if (strpos($file_name, ".") === false) {$filename = $file_name . $file_type; //新的文件名} else {$filename = $file_name;}#[由于PHP不支持客户端检查文件大小,固这里没有对文件大小进行限制]#[在客户端对上传进行大小限制!]$up = copy($_FILES[$var]["tmp_name"], $this->path . $filename);if ($up) {return $filename;} else {return false;}} else {return false;}}function Name($var) {return $_FILES[$var]["name"];}function _file_type($var) {if ($_FILES[$var]["name"]) {$name = explode(".", $_FILES[$var]["name"]);$count = count($name);$type = "." . strtolower($name[$count -1]);if (strpos($this->type, $type) === false) {return false;}return $type;} else {return false;}}function _check($file = "") {if (!$file) {return false;}$file_name = basename($file);if ($file_name == $file) {return $file;}$array = explode("/", $file);$path = "";$count = count($array);if ($count > 1) {for ($i = 0; $i < ($count -1); $i++) {$path .= $array[$i] . "/";}}$this->_make_dir($this->path . $path);$this->path = $this->path . $path;return $file_name;}#[创建目录]function _make_dir($folder) {$array = explode("/", $folder);$count = count($array);$msg = "";for ($i = 0; $i < $count; $i++) {$msg .= $array[$i];if (!file_exists($msg) && ($array[$i])) {mkdir($msg, 0777);}$msg .= "/";}return true;}function GetPath() {return $this->path;}function FileType($filename) {$filename = basename($filename);$name = explode(".", $filename);$count = count($name);$type = strtolower($name[$count -1]);return $type;}
}
?>

test.php源码如下:


<html>
<head>
<meta http-equiv="Content-Type" <meta="" content="text/​html;​" charset="utf-8">
<title>文件上传</title>
</head>
<?php
include ("upload.class.php");
//实例化一个文件上传类,可以上传指定的jpg,png,rar,ppt,doc类型的文件,上传到upload目录下。
$up = new UPLOAD("upload/", "jpg,png,rar,ppt,doc");
if (isset ($_POST['submit1'])) {$v = "upfile";echo $up->Name("upfile");if ($fname = $up->up($v)) {echo "上传成功.." . $fname;} else {echo "上传失败";}} else {echo "请选择文件上传~";
}//print_r($_FILES['upfile']) ;
?>
<body><form action="" method="POST" enctype="multipart/form-data" name="form1" id="form1"><input type="file"  name="upfile" ><input type="submit" name="submit1" value="上传"><p>在写测试用例的时候把全局变量$_FILES写为$_FILE,杯具哎。</p></form>
</body>
</html>

转载于:https://www.cnblogs.com/phpcode/archive/2012/03/11/2522719.html

PHP文件上传类及其使用实例教程相关推荐

  1. php 文件上传页面模板,PHP文件上传类实例详解

    本文实例讲述了PHP文件上传类.分享给大家供大家参考,具体如下: 这里演示了FileUpload.class.php文件上传类,其中用到了两个常量,可在网站配置文件中定义: define('ROOT_ ...

  2. 实例讲解ThinkPHP的UploadFile文件上传类的详细用法

    ThinkPHP文件上传自带了上传类,使用起来非常方便,我们将以一个文件上传实例来讲解ThinkPHP上传类的实际用法,上传类使用时有详细的中文注释,可以非常方便的告诉你类的一些方法或变量的使用方法. ...

  3. php 上传 类 代码,php 文件上传类代码

    /** * 文件上传类 */ class uploadFile { public $max_size = '1000000';//设置上传文件大小 public $file_name = 'date' ...

  4. fileupload.class.php,php文件上传类

    php文件上传类 FileUpload.class.php class FileUpload { private $filepath;     //指定上传文件保存的路径 private $allow ...

  5. PHP文件系统-文件上传类

    一.文件上传类的说明(这是一个可以处理单个文件上传和多个文件上传的处理类) 1.构造函数初始化的作用是分配存储空间和传递需要设定的参数 2.一个类的资源是有所有的定义变量的,不管是共有.私有的变量 二 ...

  6. php 上传类 缩略图,php图片文件上传类 (附自动生成缩略图) | 学步园

    /** 作 者:冻结回忆 (linghunts@163.com); 功 能:文件上传类 支持文件夹自动分组保存(2008-01/09); 时 间:2007-10-17; 创建类:参数(文件域,文件原名 ...

  7. ThinkPHP文件上传类的使用

    上传类使用ORG类库包中的Net.UpdateFile类,最新版本的上传类包含的功能如下(有些功能需要结合ThinkPHP系统其他类库): 1.基本上传功能 2.支持批量上传 3.支持生成图片缩略图 ...

  8. php.ini maxfileuploads,细说PHP高洛峰文件上传类源文件

    以下是兄弟连php视频教程中高洛峰老师所教授的文件上传类的源代码,尚没有完全理解精髓,在这里记录一下,供日后有需要时查看: $value){ $key=strtolower($key); if(!in ...

  9. 超级好用的php文件上传类(上传、缩略图、水印)

    <? /** * 文件上传类 */ class uploadFile {public $max_size='1000000'; //设置上传文件大小public $file_name='date ...

最新文章

  1. linux内核采取,采用动态加载模块的方式Linux内核编译
  2. PMP考试资料:这个项目值得去做吗
  3. 从ucOS谈,为什么需要操作系统?
  4. NokiaJ2ME开发者套件4.0 J2ME 开发
  5. javaSE各阶段练习题--初识Java章节
  6. Faste R-CNN的安装及测试
  7. mysql null值和空格_MySQL中NULL与空字符串空格问题
  8. 一些web开发中常用的、做成cs文件的js代码 - 搜刮来的
  9. 优雅地用宏实现环形缓冲区
  10. IDEA常用插件整理
  11. 为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量。为什么栈的大小有限制?
  12. 【LeetCode】【字符串】题号:*151. 翻转字符串里的单词
  13. 重写( override)and 重载(overload)
  14. 机器学习数学基础之高数篇——函数极限和导数(python版)
  15. 如何防御xss?HTML编码和JS编码
  16. tcflush()用法 以及 Termios 介绍
  17. 5G无线技术基础自学系列 | 时域资源
  18. Promise 是什么?
  19. 大学物理——关于误差
  20. Python计算:sympy解数学方程

热门文章

  1. SQLSERVER 游标
  2. Weekly Challenges - Week 11
  3. Oracle 11g RAC SCAN ip的原理及配置
  4. Doctrine官方手册 - 缓存
  5. TortoiseHg使用(hg mercurial repository management)
  6. MongoDB3.4 版本新节点同步的一点惊喜
  7. 验证redis的主从复制
  8. Booting Android: bootloaders, fastboot and boot images
  9. 【android】SurfaceFlinger合成
  10. Java集合—Deque Stack