`
xfcode
  • 浏览: 21945 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

php上传文件增强函数

    博客分类:
  • php
 
阅读更多
php文件上传的增强函数首先变得傻瓜简单化,但并不是该函数的简单化就影响他的超强功能,并且加上了强大的除错功能这是一函数,当然你可以把它变成一个类的方法!

表单中file对象,比如说$_FILES['doc'],$path为保存的路径,$type为限制上传的类型(他是一个数组,比如说限制上传doc和docx和格式,那这个参数可以填array(“doc”,”.docx”),而且扩展名前有无”.”不作要求)。
代码:
<?php 
function upload($file,$path,$type){ 
$state = array(); 
$state['error'] = "true"; 
$alltype = ""; // 所有可以上传的类型,用"/"连接起来 
$path = trim($path); 
//为$path末尾加上"/" 
if(strlen(strrchr($path,‘/‘)) <= 1){ 
$path .= "/"; 
} 
//为类型加上开头“.” 
//将所有类型合成字符串,用"/"连接起来<span id="more-78"></span> 
foreach($type as $key=>$typeone){ 
$type[$key] = $typeone = trim($typeone); 
if(strlen(strchr($typeone,".")) != strlen($typeone)){ 
$type[$key] = ".".$typeone;} 
$alltype .= $typeone.‘/‘; 
} www.jbxue.com
$alltype = substr($alltype,0,strlen($alltype)-1); //去掉最后的“/” 
if(empty($file['name'])){ 
$state['error'] = "没有上传{$alltype}类型文件!"; 
$state['errorid'] = 8; 
return $state; 
} else { 
if (!$file['error']) { 
$state['name'] = $file['name']; 
$state['type'] = strrchr($state['name'],‘.‘); 
if(in_array($state['type'],$type)){ 
$time = date("U"); 
$state['upname'] = $time.rand(1000,9999).$state['type']; //文件命名 
if(copy($file['tmp_name'],$path.$state['upname'])){ 
$state['time'] = date("U"); //上传的时间 
$state['error'] = false; 
return $state; 
} else { 
switch($file(‘error‘)){ 
case 1: $state['error'] = $state['name']."上传失败,文件大小超出了服务器的空间大小!";$state['errorid'] = 1;return $state; 
case 2: $state['error'] = $state['name']."上传失败,要上传的文件大小超出浏览器限制!";$state['errorid'] = 2;return $state; 
case 3: $state['error'] = $state['name']."上传失败,文件仅部分被上传!";$state['errorid'] = 3;return $state; 
case 4: $state['error'] = $state['name']."上传失败,没有找到要上传的文件!";$state['errorid'] = 4;return $state; 
case 5: $state['error'] = $state['name']."上传失败,服务器临时文件夹丢失!";$state['errorid'] = 5;return $state; 
case 6: $state['error'] = $state['name']."上传失败,文件写入到临时文件夹出错!";$state['errorid'] = 6;return $state; 
default: $state['error'] = $state['name']."上传失败,位置错误!";$state['errorid'] = 10;return $state; 
} 
} 
} else { 
$state['error'] = $state['name']."上传失败!不符合所要上传的文件类型!({$alltype})"; 
$state['errorid'] = 10; 
return $state; 
} 
} 
} 
?> 


返回值为一数组
$key value
error 错误详情
errorid 错误id(出现错误才有值)
type 文件扩展名(扩展名前带“.”)
upname 上传的文件名
time 上传的时间(从 Unix 纪元(1970-01-01 00:00)开始至今的秒数)

错误类型
errorid error
false //上传成功
1 上传失败,文件大小超出了服务器的空间大小!
2 上传失败,要上传的文件大小超出浏览器限制!
3 上传失败,文件仅部分被上传!
4 上传失败,没有找到要上传的文件!
5 上传失败,服务器临时文件夹丢失!
6 上传失败,文件写入到临时文件夹出错!
8 没有上传该类型文件! //表单中file对象为空
10 上传失败,位置错误!
分享到:
评论

相关推荐

    php上传文件的增强函数

    php文件上传的增强函数首先变得傻瓜简单化,但并不是该函数的简单化就影响他的超强功能,并且加上了强大的除错功能这是一函数,当然你可以把它变成一个类的方法!

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 ...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 ...

    phpwind2.0邮件增强插件(支持esmtp)

    1.打开sendmail.php,进行设置 var $S_method = 1; 1 使用默认mail函数 2 通过SOCKET连接SMTP服务器发送(支持 ESMTP 验证) 3 通过调用CDONTS.NewMail...上传sendmail.php到论坛require目录覆盖原文件

    (全)传智播客PHP就业班视频完整课程

    9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 ...

    史上最全传智播客PHP就业班视频课,8月份视频

    9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 ...

    PHP与MySQL程序设计(带完整书签)

    第15 章 处理文件上传 244 第16 章 网络 253 第17 章 php 和ldap 268 第18 章 会话处理程序 280 第19 章 用smarty 模板化 296 第20 章 web 服务 314 第21 章 保护网站安全 326 第22 章 用jquery 和php 创建ajax增强...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 ...

    KODExplorer 芒果云-资源管理器

    - 上传文件选中当前。 - f5改为异步(加入mask loading) 优化文件夹打开体验 - 键盘按键选中文件 增加字符搜索定位功能(单个字符,增加到多个字符选中。两次响应直接延迟250ms) - 幻灯片播放[优化成fancybox或者 ...

    3GCMS PHP版 2.0.rar

    7:vip版APK功能增强,具备一键营销\产品随手拍\实时接单\地图定位\派单\终端广告推送等能力. 3GCMS提供从服务器端网站到手机客户端以及客户端管理一整套的解决方案。你不需要会安卓开发,不需要对响应式网站布局...

    Editplus 3[1].0

    功能增强(by jiuk2k@CCF): 如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 ... 大家根据需要定制 相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下 【3】正则...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    UWA 2.X 通用建站系统 v2.1.0

    欢迎使用 UWA 2.X [?juwɑ] (Universal Website AsThis) ,是如斯(AsThis)基于 PHP 和 MySQL 开发的通用建...[增强]M()函数增强,可指定模型路径 [更改]$_REQUEST和ARequest::get()统一 [增强]pfa 自定义部署检查开关

    POSCMS免费版 v3.2.0 bulid1118.zip

    自定义URL一直是POSCMS系统的一个亮点,能够DIY出各种格式的URL,并支持函数与自定义运用到标签中,增强了自定义URL的灵活性。 个性化栏目URL、内容URL、子内容URL、单页URL、会员空间URL等 支持自动生成伪静态...

    UWA 2.X UTF-8 (v2.1.5_to_v2.2.0) 升级程序.zip

    1. 将升级包中 upload 下所有的文件上传至网站根目录覆盖。 2. 访问 upgrade 目录(例如 http://test.com/upgrade/ ),执行升级。 3. 登陆管理后台,清除缓存,保存一次系统选项,然后再清除缓存。 4. 升级完成后...

    editplus 代码编辑器html c++ jsp css

    如果你使用 EditPlus 进行文本编辑,那么每次创建文本文件,编辑后保存时,尽管文件类型下拉列表中显示的是文本文件, EditPlus 还是询问你是否添加".txt"后缀,是不是很烦? 解决方法: ① 在程序目录建立一个空的...

    vtigercrm-addfieldsextended:此脚本允许您在 vtigerCRM 中以增强的方式添加字段

    vtigercrm-addfieldsextended ... 将fields.php上传到 vtigercrm 的根目录 编辑文件之间 // 添加字段开始// 添加字段结束 并添加 PHP 函数 addRelatedField 和 addPicklist 以添加字段。 (见例子)

    EditPlus 2整理信箱的工具

    功能增强(by jiuk2k@CCF): 如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 ... 大家根据需要定制 相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下 【3】正则...

    UWA 2.X UTF-8 (v2.1.2_to_v2.1.3) 升级程序.zip

    1. 将升级包中 upload 下所有的文件上传至网站根目录覆盖。 2. 访问 upgrade 目录(例如 http://test.com/upgrade/ ),执行升级。 3. 登陆管理后台,清除缓存,保存一次系统选项,然后再清除缓存。 4. 升级完成后...

Global site tag (gtag.js) - Google Analytics