PHP学习模块之文件上传

1.逻辑:利用HTML为界面,将文件在线上传,在PHP文件中利用$_FILES(可以获取到大小、名字、mime等)、和pathinfo(获取目录名、基本名和扩展名)函数获取文件信息,和设置的信息作比较,可以限制文件上传的大小、类型、mime,并防止恶意上传。

2.代码:html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>文件上传</title>
</head>
<body>
	<form action="upload.php" method="post" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit" value="提交">
	</form>

</body>
</html>

upload.php代码:

<?php 
var_dump($_FILES);
//判断是否有错误号
if($_FILES['file']['error']){
//如果有错误,开始寻找错误
	switch ($_FILES['file']['error']) {
		case 1:
			$str="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。";
			break;
		case 2:
			$str="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
			break;
		case 3:
			$str="文件只有部分被上传";
			break;
		case 4:
		$str= "没有文件被上传";
			break;
		case 6:
		$str= "找不到临时文件夹";
			break;
		case 7:
		$str= "文件写入失败";
			break;
		
	}
	echo $str;
	exit;
}
//将文件大小上传限制在2M以内
if($_FILES['file']['size'] > (pow(1024, 2)) * 2){
	exit("你输入的文件超出限制");
}
//限制上传的类型
$allowMime=['image/png','image/jpeg','image/gif','image/wbmp'];
$allosubFix=['png','jpeg','gif','wbmp'];
$info=pathinfo($_FILES['file']['name']);
//var_dump($info);
$subFix=$info['extension'];
//如果文件后缀不一致
if(!in_array($subFix, $allosubFix)){
	exit("不允许的文件名后缀");
}
var_dump ($_FILES['file']['type']);
//如果mime不一致
if(!in_array($_FILES['file']['type'], $allowMime)){
	exit("不允许的mime类型");
}
//拼接上传路径
$path='upload/';
//确保文件存在
if(!file_exists($path)){
	mkdir($path);
}
//文件名随机  uniqud生成唯一id
$name=uniqid().'.'.$subFix;
//和HTML比较,判断文件是否上传
if(is_uploaded_file($_FILES['file']['tmp_name'])){
	if(move_uploaded_file($_FILES['file']['tmp_name'],$path.$name)){
		echo '文件上传成功';

	}else{
		echo '文件上传失败';

	}

}else{
	echo "不是上传文件";
}

 
 ?>

猜你喜欢

转载自blog.csdn.net/sinat_35161044/article/details/82225860
今日推荐