PHP多文件上传类实例


Posted in PHP onMarch 07, 2015

本文实例讲述了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_type_string;

    var $file_name;

    var $file_size;

    var $file_tmp_name;

    var $file_error;

    var $handledate;

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

    $this->$totalsize = 0;

}

 

function show_execute_message($smfileerror,$smfilename,$smfiletype,$smfilesize){

if($smfileerror>0){

    switch ($smfileerror){

    case 1: $smfilemessage='<strong>文件超过服务器的约定大小!</strong>';break;

    case 2: $smfilemessage ='<strong>文件超过指定的文件大小!</strong>';break;

    case 3: $smfilemessage='<strong>文件只上传了部分!</strong>';break;

    case 4: echo "$this->$file_name ".'文件上传失败!<br/>';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='<strong>文件类型不对,请核实!</strong>';

self::__destruct();

}else{

$resflag = $$this->move_file($$this->$file_tmp_name,$this->$file_name);

if ($resflag == 1){

$smfilemessage = '文件上传成功!';

$this->totalsize +=  intval($smfilesize);

self::__destruct();

}else{

$smfilemessage = '<strong>文件上传失败!</strong>';

self::__destruct();

}

}

}

 

$$smfilesizeformat = $this->size_BKM($smfilesize);

echo '<tr>

<td align="left" >'.$smfilename.'</td>

<td align="center" >'.$smfiletype.'</td>

<td align="center" >'.$smfilesizeformat.'</td>

<td align="center" >'.smfilemessage.'</td>

</tr>';

}

 

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;

}

}

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
十天学会php之第九天
Oct 09 PHP
搜索引擎技术核心揭密
Oct 09 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
php抓取页面的几种方法详解
Jun 17 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 PHP
PHP实现阳历到农历转换的类实例
Mar 07 #PHP
Laravel 5 学习笔记
Mar 06 #PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 #PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 #PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 #PHP
thinkPHP学习笔记之安装配置篇
Mar 05 #PHP
PHP判断浏览器、判断语言代码分享
Mar 05 #PHP
You might like
php中的观察者模式简单实例
2015/01/20 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
python中如何进行连乘计算
2020/05/28 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
校长寄语大全
2014/04/09 职场文书
会计学习心得体会
2014/09/09 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
民事二审代理词
2015/05/25 职场文书
Python内置数据类型中的集合详解
2022/03/18 Python
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS
nginx之queue的具体使用
2022/06/28 Servers