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 相关文章推荐
增加反向链接的101个方法 站长推荐
Jan 31 PHP
php在线生成ico文件的代码
Oct 09 PHP
php学习之变量的使用
May 29 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
Laravel 读取 config 下的数据方法
Oct 13 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的类 功能齐全的发送邮件类
2006/10/09 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python排序方法实例分析
2015/04/30 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
百度软件工程师职位
2013/02/14 面试题
2015年学生会部门工作总结
2015/04/21 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
Python中文纠错的简单实现
2021/07/07 Python
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB