0,先了解一下enctype
application/x-www-form-urlencoded | 在发送前编码所有字符(默认) |
multipart/form-data | 不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。 |
text/plain | 空格转换为 “+” 加号,但不对特殊字符编码。 |
1,index.html
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<title>最简单的图片上传demo</title>
</head>
<body>
<form action="./upload.active.php" enctype="multipart/form-data" method="post">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>
upload.active.php
<?php
$fileInfo = $_FILES['file'];
echo "<pre>";
print_r($fileInfo);
echo "</pre>";
2,php页面增加过滤(注意:文件的拥有者php-fpm或者文件夹权限777)
<?php
$fileInfo = $_FILES['file'];
$ext = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
$allowExt = array('jpg','png','gif','jpeg');
// 1,判断错误号
if($fileInfo['error']>0){
exit('有错误');
}
// 2,是检查文件后缀
if(!in_array($ext, $allowExt)){
exit('非法文件类型');
}
// 3,检测文件大小
$maxSize = 10*1024*1024; //10M
if($fileInfo['size']>$maxSize){
exit('上传文件过大');
}
// 4检查文件类型
$flag = true;
if($flag){
if(!getimagesize($fileInfo['tmp_name'])){
exit('不是图片类型');
}
}
// 5,检测是否通过http post提交
if(!is_uploaded_file($fileInfo['tmp_name'])){
exit('文件不是通过HTTP POST提交');
}
// 6,判断是否移动成功
// $day =
$uploadPath = './images';
if(!file_exists($uploadPath)){
mkdir($uploadPath,0777,true);
chmod($uploadPath,0777);
}
// 随机一个图片的名字
$uniName = md5(uniqid(microtime(true),true)).'.'.$ext;
$destination = $uploadPath.'/'.$uniName;
if(!@move_uploaded_file($fileInfo['tmp_name'], $destination)){
exit('文件移动失败');
}
echo '<a href="'.$destination.'">'.$destination.'</a>';
发表回复
要发表评论,您必须先登录。