php上传文件的增强函数


Posted in PHP onJuly 21, 2010

表单中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.‘/‘; 
} 
$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 文章采集正则代码
Dec 28 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
19个超实用的PHP代码片段
Mar 14 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
php文件下载处理方法分析
Apr 22 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
PHP实现打包下载文件的方法示例
Oct 07 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
php 模拟POST|GET操作实现代码
Jul 20 #PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 #PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 #PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 #PHP
ajax实现无刷新分页(php)
Jul 18 #PHP
php将会员数据导入到ucenter的代码
Jul 18 #PHP
php 无限级数据JSON格式及JS解析
Jul 17 #PHP
You might like
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
浅谈Python基础—判断和循环
2019/03/22 Python
python里运用私有属性和方法总结
2019/07/08 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
在python中修改.properties文件的操作
2020/04/08 Python
司机的工作范围及职责
2013/11/13 职场文书
行政主管岗位职责
2013/11/18 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
教师工作总结范文2014
2014/11/10 职场文书
2014年法务工作总结
2014/12/11 职场文书
经营场所使用证明
2015/06/19 职场文书
合作意向书范本
2019/04/17 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript