Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:文件上传看上去很简单, 其实里面还是有许多细节的, 值得研究
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<!--文件上传必须是post类型-->
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<!-- name 一定要有,因为name最终会成为php中的$_FILES['my_file']-->
<input type="file" name="my_file">
<button>上传</button>
</form>
</body>
</html>
upload_file.php
<?php
// 文件上传
// 1. 配置上传参数
// 允许上传的文件类型
$fileType = ['jpg', 'png', 'gif'];
// 允许上传的文件大小,限制为3M
$fileSize = 3145728;
// 文件上传的路径
$filePath = '/uploads/';
// 原始文件名
$fileName = $_FILES['my_file']['name'];
// 临时文件名
$tempFile = $_FILES['my_file']['tmp_name'];
// 2. 判断是否上传成功
$uploadError = $_FILES['my_file']['error'];
if ($uploadError > 0) {
switch ($uploadError) {
case 1:
case 2:
die('上传文件不能超过3M');
case 3:
die('上传文件不完整');
case 4:
die('没有选择文件');
default:
die('未知错误');
}
}
// 3. 判断文件扩展名是否正确
$extension = explode('.', $fileName)[1];
if (!in_array($extension, $fileType)) {
die('不允许上传' . $extension . '类型的文件');
}
// 4. 将上传后的文件重命名,防止同名文件覆盖
$fileName = date('YmdHis', time()) . md5(mt_rand(1, 99)) . '.' . $extension;
// 5. 上传文件
// 判断是否是通过POST传值
if (is_uploaded_file($tempFile)) {
if (move_uploaded_file($tempFile, __DIR__ . $filePath . $fileName)) {
echo '<script>alert("上传成功");history.back();</script>';
} else {
die('上传失败');
}
} else {
die('非法操作');
}
exit();
学会了文件上传操作的相关过程。