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

文件上传函数: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'];
	}




转载于:https://my.oschina.net/mpf/blog/610086

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值