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 smarty模版引擎中的缓存应用
Dec 11 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
Symfony核心类概述
Mar 17 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
PHP操作Redis常用命令的实例详解
Dec 23 PHP
PHP判断是否是json字符串
Apr 01 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
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
JavaScript 调试器简介
2009/02/21 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python开发之函数定义实例分析
2015/11/12 Python
Django URL传递参数的方法总结
2016/08/28 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python 字符串换行的多种方式
2018/09/06 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
公司活动邀请函
2014/01/24 职场文书
红头文件任命书范本
2014/06/05 职场文书
测控技术自荐信
2014/06/05 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
Python first-order-model实现让照片动起来
2022/06/25 Python