批改状态:合格
老师批语:
本次作业内容为PHP实现文件上传过程。
<meta charset="utf-8">
<!--
1.文件上传的请求类型必须是POST
2.允许的数据类型必须是:multipart/form-data
如果想在当前页面处理上传的话,action有三种写法:
1.最懒的方式:空,默认为当前脚本。
<form action="" method="post" enctype="multipart/form-data">
2.最死的方法:当前脚本名。
<form action="0419hw.php" method="post" enctype="multipart/form-data"
3.最酷的方法:如下例写法。
-->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post" enctype="multipart/form-data">
<!-- 创建隐藏域 -->
<input type="hidden" name="MAX_FILE_SIZE" value='542488'>
<fieldset>
<legend align="center">文件上传</legend>
<p><strong>选择文件:</strong><input type="file" name="upload"></p>
<p align="center"><button type="submit" name="submit">上传</button></p>
</fieldset>
</form>
<?php
//$_FILES:它是一个二维数组。
//$_FILES['当前上传文件的控件名称,input[name="upload"]']
// $_FILES['upload']['name'] :文件原始名称
// $_FILES['upload']['type'] :文件类型
// $_FILES['upload']['sizi'] :文件大小
// $_FILES['upload']['tmp_name'] :服务器上的临时文件夹
// $_FILES['upload']['error'] :错误代码
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//1.判断是否有文件被上传
if (isset($_FILES['upload'])) {
//2.设置一下允许上传的类型
$allow = ['image/jpg','image/jpeg','image/png'];
//判断上传文件的类型是否符合要求
if (in_array($_FILES['upload']['type'],$allow)) {
//将用户文件上传到指定的临时目录:move_uploaded_file()
if (move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")){
//输出上传成功
echo '<script>alert(\'上传成功\')</script>';
}
}else {
echo '<script>alert(\'只允许上传jpg或png格式的图片文件\')</script>';
}
}
if ($_FILES['upload']['error'] > 0) {
echo '<p>错误的原因是:<strong>';
switch ($_FILES['upload']['error']) {
case 1:
echo '文件超过了php.ini中的大小';
break;
case 2:
echo '文件超过表单中设置的大小';
break;
case 3:
echo '文件办有一部分被上传了';
break;
case 4:
echo '没有文件被上传';
break;
case 6:
echo '没有可用的临时文件夹';
break;
case 8:
echo '上传意外中止';
break;
default:
echo '未知错误';
break;
}
echo '</strong></p>';
//删除临时目录,系统会在会话结束 自动清空。
if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) {
unlink($_FILES['upload']['tmp_name']);
}
}
}
?>点击 "运行实例" 按钮查看在线实例
小结:
1、form中method和enctype要注意
2、在表单中设置的文件大小仅供参考
3、在pnp脚本中要注意:
1)首先要进行请求类型判断,必须是POST,用isset()判断是否有文件上传。
2)注意move_uploaded_file()函数,将上传文件从临时文件夹转移到上传目录。
本次作业没有实现ajax验证,因为没搞懂添加上传按钮的点击事件后,怎么判断文件上传成功,因此先上传基本部分,验证等会做后再补充修改。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号