php之文件上传类代码
/*
单个文件上传 功能
上传文件
配置允许的后缀
配置允许的大小 获取文件后缀
判断文件的后缀
报错
*/
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之文件上传类代码的更多相关文章
- ASP.NET 文件上传类 简单好用
调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...
- [上传下载] C#FileUp文件上传类 (转载)
点击下载 FileUp.zip 主要功能如下 .把上传的文件转换为字节数组 .流转化为字节数组 .上传文件根据FileUpload控件上传 .把Byte流上传到指定目录并保存为文件 看下面代码吧 // ...
- PHP 文件上传类
FileUpload.; $]; $_newname = date(,). : To ...
- php 文件上传类 实例分享
最近在研究php上传的内容,找到一个不错的php上传类,分享下. <?php /** * 文件上传类 * class: uploadFile * edit: www.jbxue.com */ c ...
- ThinkPHP文件上传类
TP框架自带文件上传类使用: 类文件在ThinkPHP/Library/Think/默认在目录下 public function upload(){ $upload = new \Think\Uplo ...
- C#文件上传类,文件流,字节数组等
using System;using System.IO;using System.Web;using System.Web.UI.WebControls; namespace DotNet.Util ...
- Php文件上传类class.upload.php
简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...
- 自定义MVC框架之工具类-文件上传类
截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...
- php 文件上传类,功能相当齐全,留作开发中备用吧。
收藏一个经典好用的php 文件上传类,功能相当齐全,留作开发中备用吧. 好东西,大家都喜欢,才是真的好,哈哈!!! <?php /** * 文件上传类 */ class upload ...
随机推荐
- ANDROID Porting系列二、配置一个新产品
ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1. 目录//vendor/创建一个公 ...
- mysql常用总结
用户管理mysql>use mysql;查看mysql> select host,user,password from user ;创建mysql> create user zx_r ...
- BufferedInputStream详解
BufferedInputStream是一个带有缓冲区域的InputStream,它的继承体系如下: InputStream |__FilterInputStream |__Bu ...
- PIC16F877A最小功能板 - 原理图系列
一.顶层 主要由port转换.MCU.复位.键盘.晶振和显示等5部分电路组成. 二.模块层 1. port转换电路 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...
- percona-MYSQLGUI监控
1.https://www.percona.com/blog/2016/05/26/monitoring-with-percona-app-for-grafana/ http://pmmdemo.pe ...
- 使用vi是方向键变乱码 退格键不能使用的解决方法
一.编辑/etc/vim/vimrc.tiny 由于/etc/vim/vimrc.tiny的拥有者是root用户,所以要在root的权限下对这个文件进行修改.很简单,这个文件里面的倒数第二句话是“se ...
- Qt Creator 你必须要掌握的快捷操作
多使用快捷键能显著提高工作效率,尽可能减少键盘,鼠标之间切换所浪费的时间.我这里列出个人认为非常重要必须掌握的 Qt Creator 快捷键.看你知道几个? . 1 .Ctrl(按住)+ Tab快速切 ...
- 基于HTML5的SLG游戏开发(一):搭建开发环境(1)
开发环境: 1.操作系统:MacOS 10.8.5 2.本地web服务器:Apache 2.2.24 (Window环境推荐使用WampServer) 3.编码工具:WebStrom 7.0 4.调试 ...
- linux device driver —— ioctl
实现了应用程序和设备驱动通过ioctl通信.还是对设备驱动没什么感觉,贴一下代码吧. 在Ubuntu 16.04 64bit中测试通过 ioctldemo.c #include <linux/m ...
- typeerror $.ajax is not a function
在web开发中使用jQuery进行前端开发遇到这么个问题,纠结了很久终于解决了,下面说一下解决方法. 大家可以参照下面几种排查的方法. 1.首先检查是否引用jQuery的库. 2.页面如果使用的ifr ...