您的位置:首页 > 编程语言 > PHP开发

PHP文件上传-单文件上传函数

2016-01-27 00:00 671 查看
文件上传函数:upload5.php

<?php
/**
* @param array $file 文件上传的信息
* @param string $path 文件存放路径,不会自动生成,需要手动创建
* @param array $allowType 文件上传类型,默认是只允许上传图片类型
* @param int $maxSize 上传文件大小限制,字节数,默认不限制大小
* @return array $info 返回状态信息
*/
function uploadFile($file,$path,$allowType=array(),$maxSize=0){
// 第一步 设置文件上传状态提示信息
$info = array(
'isok' => false,	// 文件上传状态标识
'message' => ''		// 文件上传提示信息
);

// 第二步 判断文件上传错误号,这个从根本上表名文件上传是否成功
if($file['error']>0){	// 如果错误号大于0,说明上传有问题
switch ($file['error']) {
case 1:
$info['message'] = '文件大小超出PHP的限制';
break;
case 2:
$info['message'] = '文件大小超出HTML的限制';
break;
case 3:
$info['message'] = '文件只有部分被上传';
break;
case 4:
$info['message'] = '没有文件被上传';
break;
default:
$info['message'] = '未知错误';
break;
}

// 终止执行
return $info;
}

// 验证文件类型
if(empty($allowType) || !is_array($allowType)){
$allowType = array('image/jpeg','image/png','image/gif','image/pjpeg','image/x-png');
}

if(!in_array($file['type'], $allowType)){
$info['message'] = '文件类型不符合要求';
return $info;
}

// 验证文件大小
if($maxSize && $file['size']>$maxSize){
$info['message'] = '文件太大,超出限制';
return $info;
}

// 检测文件是否是通过HTTP POST方式上传的
if(is_uploaded_file($file['tmp_name'])){
// 处理上传路径
$path = rtrim($path,'/').'/';
// 获取文件后缀
$suffix = pathinfo($file['name'],PATHINFO_EXTENSION);
// 生成文件名
do{
$filename = date('YmdHis').mt_rand(1000,9999).'.'.$suffix;
}while(file_exists($path.$filename));

// 判断移动文件是否成功
if(move_uploaded_file($file['tmp_name'], $path.$filename)){
// 上传成功,修改状态信息
$info['isok'] = true;
$info['message'] = $path.$filename;	// 返回文件路径,用于写入数据库
return $info;
} else {
$info['message'] = '文件移动失败';
return $info;
}
} else {
$info['message'] = '请使用HTTP POST方式上传';
return $info;
}
}


使用方法:
HTML表单页面

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="./1.php" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file"><br><br>
<input type="submit" value="上传">
</form>
</body>
</html>


接收处理文件上传页面

<?php
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set("PRC");

// 引入函数
include('./upload5.php');

// 接收表单传递的数据
$file = $_FILES['file'];

// 设置路径
$path = './upload/';

// 调用函数
$info = uploadFile($file,$path);

// 输出信息
if($info['isok']){
echo '上传成功!文件名:'.$info['message'];
} else {
echo '上传失败!错误信息:'.$info['message'];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: