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 相关文章推荐
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
深入php多态的实现详解
Jun 09 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php表单敏感字符过滤类
Dec 08 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
Smarty环境配置与使用入门教程
May 11 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
php中str_pad()函数用法分析
Mar 28 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP测试框架PHPUnit组织测试操作示例
May 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
PHP中怎样防止SQL注入分析
2014/10/23 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
js导出txt示例代码
2014/01/14 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
Python常用随机数与随机字符串方法实例
2015/04/09 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
pandas 时间格式转换的实现
2019/07/06 Python
python实时监控logstash日志代码
2020/04/27 Python
vscode调试django项目的方法
2020/08/06 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
大学军训自我鉴定
2013/12/15 职场文书
高中生操行评语大全
2014/04/25 职场文书
责任心演讲稿
2014/05/14 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
学校百日安全活动总结
2015/05/07 职场文书
行政答辩状范文
2015/05/21 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
DE1103使用报告
2022/04/05 无线电
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL