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如何得到当前页和上一页的地址?
Nov 27 PHP
php中看实例学正则表达式
Dec 25 PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
laravel model 两表联查示例
Oct 24 PHP
PHP7 整型处理机制修改
Mar 09 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 smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
JS定义回车事件(实现代码)
2013/07/08 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python清空文件并替换内容的实例
2018/10/22 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
毕业生就业推荐信范文
2013/12/01 职场文书
自我评价个人范文
2013/12/16 职场文书
五型班组建设方案
2014/02/10 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
个人综合鉴定材料
2014/05/23 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
项目申请汇报材料
2014/08/16 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python