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 相关文章推荐
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
apache php模块整合操作指南
Nov 16 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
Javascript与PHP验证用户输入URL地址是否正确
Oct 09 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
php中文语义分析实现方法示例
Sep 28 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
openflashchart 2.0 简单案例php版
2012/05/21 PHP
phpfpm的作用和用法
2019/10/10 PHP
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
详解javascript高级定时器
2015/12/31 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
生物制药毕业生自荐信
2013/10/16 职场文书
工业自动化专业毕业生推荐信
2013/11/18 职场文书
网上书店创业计划书
2014/01/12 职场文书
装修设计师求职信
2014/02/26 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
于丹论语心得观后感
2015/06/15 职场文书
学生会干部任命书
2015/09/21 职场文书