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 flv视频时间获取函数
Jun 29 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
php递归遍历删除文件的方法
Apr 17 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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知道与问问的采集插件代码
2010/10/12 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
numpy基础教程之np.linalg
2019/02/12 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
新闻专业个人求职信
2013/12/19 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
旷课检讨书范文
2014/10/30 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
党校学习个人总结
2015/02/15 职场文书
开场白怎么写
2015/06/01 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
新手初学Java网络编程
2021/07/07 Java/Android