初级php:经过简单验证完成多文件上传的处理
时间:2011-08-03
来源:互联网
<?php
/*
类名: uploads
描述: 经过简单验证完成多文件上传的处理
作者: 文名天下
http://weibo.com/wenmingtianxia
*/
class uploads{
/*
方法: move() 经过方法中其他函数的检测上传一段文件
参数: $fName input 值 一般为 f[] 等
$max 文件允许的最大字节数默认1024000
$list 数组, 允许的后缀名列表
返回: array [0] 0为上传成功,1-9为错误号;
[1] 返回文件urls[]数组,或者错误说明;
*/
public function move($fName,$max=1024000,$listArr=array('jpg','gif','jpeg','png')){
#检测是否符合条件
$check=$this->checkSuffix($fName,$listArr);
if($check[0]!='0') return $check;
$check=$this->checkSize($fName,$max);
if($check[0]!='0') return $check;
$check=$this->checkError($fName);
if($check[0]!='0') return $check;
#上传
$i=0;
$tmp=$_FILES[$fName]['tmp_name'];
$name=$_FILES[$fName]['name'];
foreach($tmp as $value){
$topath='attachments/'.date('Y').'/'.date('m').'/'.date('d');
if(!is_dir($topath)) mkdir($topath,0777,true);
$to[$i]=$topath.'/'.uniqid().$name[$i];
move_uploaded_file($tmp[$i],$to[$i]);
$i++;
}
return array('0',$to);
}#move()
/*
方法: checkError() 检查一组文件的上传过程是否有错误
参数: $fName 传入表单的input 值 一般为 f[] 等
返回: array [0]反馈是否通过, 0 为通过;
[1]返回详细说明;
*/
private function checkError($fName){
foreach($_FILES[$fName]['error'] as $value){
switch ($value) {
case 1:
return array('1','文件大小超过php.ini中指定的大小');
case 2:
return array('2','文件大小超过MAX_FILE_SIZE的大小');
case 3:
return array('3','文件只有部分被上传');
case 4:
return array('4','没有文件被上传');
case 6:
return array('6','没有找到缓存文件');
case 7:
return array('7','文件写入失败');
}
}
return array('0','pass');
}#upError()
/*
方法: checkSuffix() 检查上传文件的文件名是否符合要求;
参数: $fName 表单input file 的name 值 一般为 f[] 等;
$list 数组, 允许的后缀名列表;
返回: array [0]反馈是否通过, 0 为通过;
[1]返回详细说明;
*/
private function checkSuffix($fName,$list=array('jpg','gif','jpeg','png')){
foreach($_FILES[$fName]['name'] as $value){
$arr=explode('.',$value);
$suffix=array_pop($arr);
if (!in_array($suffix,$list)){
if($suffix=='') return array('8','文件未找到,请重新提交');
return array('8',$suffix.'文件暂时无法上传');
}
}
return array('0','pass');
}#upSuffix()
/*
方法: checkSize() 检查文件的上传大小是否符合要求;
参数: $fName 表单中 input file name 的值 一般为 f[] 等;
$max 期望控制文件的最大值,默认为1M
返回: array [0]反馈是否通过, 0 为通过;
[1]返回详细说明;
*/
private function checkSize($fName,$max=1024000){
foreach($_FILES[$fName]['size'] as $value){
if($value>$max){
return array('0','文件超过'.$max.'字节');
}
}
return array('0','pass');
}#checkSize()
}//class upload
?>
/*
类名: uploads
描述: 经过简单验证完成多文件上传的处理
作者: 文名天下
http://weibo.com/wenmingtianxia
*/
class uploads{
/*
方法: move() 经过方法中其他函数的检测上传一段文件
参数: $fName input 值 一般为 f[] 等
$max 文件允许的最大字节数默认1024000
$list 数组, 允许的后缀名列表
返回: array [0] 0为上传成功,1-9为错误号;
[1] 返回文件urls[]数组,或者错误说明;
*/
public function move($fName,$max=1024000,$listArr=array('jpg','gif','jpeg','png')){
#检测是否符合条件
$check=$this->checkSuffix($fName,$listArr);
if($check[0]!='0') return $check;
$check=$this->checkSize($fName,$max);
if($check[0]!='0') return $check;
$check=$this->checkError($fName);
if($check[0]!='0') return $check;
#上传
$i=0;
$tmp=$_FILES[$fName]['tmp_name'];
$name=$_FILES[$fName]['name'];
foreach($tmp as $value){
$topath='attachments/'.date('Y').'/'.date('m').'/'.date('d');
if(!is_dir($topath)) mkdir($topath,0777,true);
$to[$i]=$topath.'/'.uniqid().$name[$i];
move_uploaded_file($tmp[$i],$to[$i]);
$i++;
}
return array('0',$to);
}#move()
/*
方法: checkError() 检查一组文件的上传过程是否有错误
参数: $fName 传入表单的input 值 一般为 f[] 等
返回: array [0]反馈是否通过, 0 为通过;
[1]返回详细说明;
*/
private function checkError($fName){
foreach($_FILES[$fName]['error'] as $value){
switch ($value) {
case 1:
return array('1','文件大小超过php.ini中指定的大小');
case 2:
return array('2','文件大小超过MAX_FILE_SIZE的大小');
case 3:
return array('3','文件只有部分被上传');
case 4:
return array('4','没有文件被上传');
case 6:
return array('6','没有找到缓存文件');
case 7:
return array('7','文件写入失败');
}
}
return array('0','pass');
}#upError()
/*
方法: checkSuffix() 检查上传文件的文件名是否符合要求;
参数: $fName 表单input file 的name 值 一般为 f[] 等;
$list 数组, 允许的后缀名列表;
返回: array [0]反馈是否通过, 0 为通过;
[1]返回详细说明;
*/
private function checkSuffix($fName,$list=array('jpg','gif','jpeg','png')){
foreach($_FILES[$fName]['name'] as $value){
$arr=explode('.',$value);
$suffix=array_pop($arr);
if (!in_array($suffix,$list)){
if($suffix=='') return array('8','文件未找到,请重新提交');
return array('8',$suffix.'文件暂时无法上传');
}
}
return array('0','pass');
}#upSuffix()
/*
方法: checkSize() 检查文件的上传大小是否符合要求;
参数: $fName 表单中 input file name 的值 一般为 f[] 等;
$max 期望控制文件的最大值,默认为1M
返回: array [0]反馈是否通过, 0 为通过;
[1]返回详细说明;
*/
private function checkSize($fName,$max=1024000){
foreach($_FILES[$fName]['size'] as $value){
if($value>$max){
return array('0','文件超过'.$max.'字节');
}
}
return array('0','pass');
}#checkSize()
}//class upload
?>
作者: 陈文_32 发布时间: 2011-08-03
诶~~ 简直不敢相信这是自己敲出来的, 一个月的学习啊~~
作者: 陈文_32 发布时间: 2011-08-03
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28