Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
<?php
// $_FILES
// printf('<pre>%s</pre>', print_r($_FILES, true));
if (isset($_FILES['imgs'])) {
// 原始文件名
$name = $_FILES['imgs']['name'];
// 临时文件名
$tmpName = $_FILES['imgs']['tmp_name'];
// 错误代码
$error = $_FILES['imgs']['error'];
if ($error > 0) {
$img_t = '<span style="color:red">上传失败!</span><br>';
switch ($error) {
case 1:
$img_t .= '大小超过了php.ini中的允许上传的文件大小';
break;
case 2:
$img_t .= '大小超过了表单中(MAX_FILE_SIZE)的允许上传的文件大小';
break;
case 3:
$img_t .= '文件只有部分被上传';
break;
case 4:
$img_t .= '没有文件被上传';
break;
case 6:
$img_t .= '找不到临时目录';
break;
case 7:
$img_t .= '文件写入失败,请检查目录权限';
break;
}
echo "<p>$img_t</p>";
} else {
//判断上传方式是否合法? POST
if (is_uploaded_file($tmpName)) {
// 文件类型白名单
$all_img = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];
// 获取扩展名
$ext_name = pathinfo($name)['extension'];
if (in_array($ext_name, $all_img)) {
// 如果上传方式合法,且是允许的类型,则可以移动到指定的目录中了
$path = 'attach/';
// 为了防止同名覆盖,应该给目标文件名重命名
$img_name = $path . md5($name) . time() . '.' . $ext_name;
// 将文件从临时目录移动到目标目录中
if (move_uploaded_file($tmpName, $img_name)) {
echo '<p>上传成功</p>';
// 预览
echo "<img src='$img_name' width='50px'>";
} else {
}
} else {
echo '<p>文件类型错误</p>';
}
} else {
echo '<p>上传方式非法</p>';
}
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>单文件上传</title>
</head>
<body>
<!--
1. method: POST
2. ecntype: multipart/form-data
-->
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>单文件上传</legend>
<input type="hidden" name="MAX_FILE_SIZE" value="200000">
<input type="file" name="imgs">
<button>上传</button>
</fieldset>
</form>
</body>
</html>
<?php
// $_FILES
// printf('<pre>%s</pre>', print_r($_FILES, true));
if (isset($_FILES['imgs'])) {
foreach ($_FILES['imgs']['error'] as $key => $error) {
// 0 => UPLOAD_ERR_OK
if ($error === UPLOAD_ERR_OK) {
// 原始文件名
$name = $_FILES['imgs']['name'][$key];
// 临时文件名
$tmpName = $_FILES['imgs']['tmp_name'][$key];
// 判断上传方式是否合法? POST
if (is_uploaded_file($tmpName)) {
// 文件类型白名单
$all_img = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];
// 获取扩展名
$ext_name = pathinfo($name)['extension'];
if (in_array($ext_name, $all_img)) {
// 如果上传方式合法,且是允许的类型,则可以移动到指定的目录中了
$path = 'attach/';
// 为了防止同名覆盖,应该给目标文件名重命名
$img_name = $path . md5($name) . time() . '.' . $ext_name;
// 将文件从临时目录移动到目标目录中
if (move_uploaded_file($tmpName, $img_name)) {
echo '<p>上传成功</p>';
// 预览
echo "<img src='$img_name' width='50px'>";
} else {
}
} else {
echo '<p>文件类型错误</p>';
}
} else {
echo '<p>上传方式非法</p>';
}
}
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>批量多文件上传</title>
</head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>批量多文件上传</legend>
<!-- multiple: 允许同时选择多个 -->
<input type="file" name="imgs[]" multiple>
<button>上传</button>
</fieldset>
</form>
</body>
</html>