/*
单个文件上传 功能
上传文件
配置允许的后缀
配置允许的大小 获取文件后缀
判断文件的后缀
报错
*/
class UpTool{
protected $allowExt = 'jpg,jpeg,gif,bmp,png';
protected $maxSize = 1; //1M ,以M为单位 protected $file = null; //准备储存上传文件信息
protected $errno = 0; //错误代码
protected $error = array(
0=>'无错',
1=>'上传文件大小超出系统限制',
2=>'上传文件的大小超出网页表单限制',
3=>'文件只有部分被上传',
4=>'没有文件被上传',
6=>'找不到临时文件夹',
7=>'文件写入失败',
8=>'不允许的文件后缀',
9=>'文件大小超出类的允许范围',
10=>'创建目录失败',
11=>'文件移动失败'
); /*
上传
*/
public function up($key) {
if (!isset($_FILES[$key])) {
return false;
}
$f = $_FILES[$key]; //检验上传是否成功
if ($f['error']) {
$this->errno = $f['error'];
return false;
} //获取后缀
$ext = $this->getExt($f['name']);
//检查后缀
if (!$this->isAllowExt($ext)) {
$this->errno = 8;
return false;
}
//检查大小
if (!$this->isAllowSize($f['size'])) {
$this->errno = 9;
return false;
}
//创建目录
$dir = $this->mk_dir();
if ($dir == false) {
$this->errno = 10;
return fasle;
} //生成随机文件名
$newname = $this->randName() . '.' .$ext;
//$dir = $dir . '/' .$newname;
//移动
if(!move_uploaded_file($f['tmp_name'], $dir . '/' .$newname)) {
$this->errno = 11;
return false;
}
return true;//str_replace(ROOT, '', $dir);
} public function getErr(){
return $this->error[$this->errno];
} /*
parm string $exts 允许的后缀
自动添加 允许的后缀,和文件的大小
*/
public function setExt($exts) {
$this->allowExt = $exts;
}
public function setSize($num) {
$this->maxSize = $num;
} /*
string $file
return string $ext 后缀
*/ protected function getExt($file) {
$tmp = explode('.', $file);
return end($tmp);
}
/*
string $ext 文件后缀
return bool
防止大小写的问题
*/
protected function isAllowExt($ext) {
return in_array(strtolower($ext), explode(',', strtolower($this->allowExt))) ; } /*
检查文件的大小
*/
protected function isAllowSize($size) {
return $size <= $this->maxSize *1024*1024;
}
//按日期创建目录的方法
protected function mk_dir() {
$dir = 'images/' . date('Ym/d');
if(is_dir($dir) || mkdir($dir,0777,true)) {
return $dir;
} else {
return false;
}
} /*
生成随机文件名
*/
protected function randName($length = 6) {
$str = 'abcdefghijkmnpqrstuvwxyz23456789';
return substr(str_shuffle($str),0,$length);
} }

form 表单

<form action="up.php" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username" /> <br/>
头像: <input type="file" name="pic" />
<input type="submit" value="提交" />
</form>

另起页面调用

require('./UpTool.class.php');  

$uptool = new UpTool();
$uptool->setExt('rar,doc');
$uptool->setSize(1); if ($uptool->up('pic')) {
echo '上传成功';
} else {
echo '失败';
echo $uptool->getErr();
}

php之文件上传类代码的更多相关文章

  1. ASP.NET 文件上传类 简单好用

    调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...

  2. [上传下载] C#FileUp文件上传类 (转载)

    点击下载 FileUp.zip 主要功能如下 .把上传的文件转换为字节数组 .流转化为字节数组 .上传文件根据FileUpload控件上传 .把Byte流上传到指定目录并保存为文件 看下面代码吧 // ...

  3. PHP 文件上传类

    FileUpload.;                $];                $_newname = date(,). :                             To ...

  4. php 文件上传类 实例分享

    最近在研究php上传的内容,找到一个不错的php上传类,分享下. <?php /** * 文件上传类 * class: uploadFile * edit: www.jbxue.com */ c ...

  5. ThinkPHP文件上传类

    TP框架自带文件上传类使用: 类文件在ThinkPHP/Library/Think/默认在目录下 public function upload(){ $upload = new \Think\Uplo ...

  6. C#文件上传类,文件流,字节数组等

    using System;using System.IO;using System.Web;using System.Web.UI.WebControls; namespace DotNet.Util ...

  7. Php文件上传类class.upload.php

    简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...

  8. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  9. php 文件上传类,功能相当齐全,留作开发中备用吧。

    收藏一个经典好用的php 文件上传类,功能相当齐全,留作开发中备用吧. 好东西,大家都喜欢,才是真的好,哈哈!!! <?php  /**   * 文件上传类   */  class upload ...

随机推荐

  1. vijosP1471 教主的游乐场

    vijosP1471 教主的游乐场 链接:https://vijos.org/p/1471 [思路] 递推. 首先找到最左边的可以一步跳到后方的L, 那么L之后的点有两种情况:要么a足以跳到后方步数为 ...

  2. GPG error: the public key is not available

    GPG error: The following signatures couldn't be verified because the public key is not available I h ...

  3. Java8中Lambda表达式的10个例子

    Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 //Before Java 8: new Thread(new Runnable() { @Overri ...

  4. Color Cube – 国产的优秀配色取色工具

    官方下载地址:http://fancynode.dbankcloud.com/ColorCube2.0.1ForWin.rar 比如今天所要介绍的 Color Cube (配色神器) 就属于“功大于过 ...

  5. 如何制作iso文件

    UltraISO 9.6.2.3059中文完美破解安装版 http://www.upantool.com/qidong/2011/UltraISO_v9.5.0.2800.html 软碟通v9.6.2 ...

  6. android 18 Bundle类

    Bundle类:竖屏的activity换到横屏的activity的时候,会把竖屏的activity杀掉横屏的activity创建,竖屏的activity会有一些计算结果,可以用数据存起来,存到内存里面 ...

  7. 如何进去bios设置

    1.BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统".其实,它是一组固化到计算机内主板上 ...

  8. 关于struts2中action请求会执行两次的问题

    关于struts2中action请求会执行两次的问题     在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...

  9. css考核点整理(一)-浮动的理解和清除浮动的几种方式

    浮动的理解和清除浮动的几种方式 clear语法:clear : none | left | right | both 取值:none : 默认值.允许两边都可以有浮动对象left : 不允许左边有浮动 ...

  10. hadoop集群环境搭建准备工作

    一定要注意hadoop和linux系统的位数一定要相同,就是说如果hadoop是32位的,linux系统也一定要安装32位的. 准备工作: 1 首先在VMware中建立6台虚拟机(配置默认即可).这是 ...