本次作业内容为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验证,因为没搞懂添加上传按钮的点击事件后,怎么判断文件上传成功,因此先上传基本部分,验证等会做后再补充修改。