Blogger Information
Blog 34
fans 2
comment 0
visits 23304
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
12月9号作业 文件上传
遗忘了寂寞
Original
631 people have browsed it

前端页面 index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>文件上传表单</title>
  6. </head>
  7. <body>
  8. <!--请求类型必须是POST, 数据编码类型必须是: 复合表单数据,让服务器知道上传的是文件-->
  9. <form action="demo1.php" method="post" enctype="multipart/form-data">
  10. <input type="file" name="my_file" id="">
  11. <!-- 隐藏域:限制上传文件大小, 不超过php.ini: upload_max_filesize值-->
  12. <!-- 1M=1024k=1048576字节, 3M = 3145728字节-->
  13. <input type="hidden" name="MAX_FILE_SIZE" value="3145728">
  14. <button>上传</button>
  15. </form>
  16. </body>
  17. </html>

PHP处理页面 demo1.php

  1. <?php
  2. // 后端PHP主要使用超全局变量: $_FILES 来处理上传的文件
  3. if (!isset($_FILES['my_file'])) {
  4. echo '<script>alert("没有文件被上传");location.assign("index.html");</script>';
  5. exit;
  6. }
  7. // 1. 配置上传参数
  8. // 设置允许上传的文件类型
  9. $fileType = ['jpg', 'jpeg', 'png', 'gif'];
  10. // 设置允许上传的最大文件长度
  11. $fileSize = 3145728;
  12. // 上传到服务器上指定的目录
  13. $filePath = '/uploads/';
  14. // 上传的原始文件名
  15. $fileName = $_FILES['my_file']['name'];
  16. // 上传保存在服务器上的临时文件名
  17. $tempFile = $_FILES['my_file']['tmp_name'];
  18. // 3. 判断上传是否成功?
  19. // 主要是通过$_FILES['my_file']['error']值, 等于0成或,大于1出错,出错类型用switch分析
  20. $uploadError = $_FILES['my_file']['error'];
  21. if ($uploadError > 0) {
  22. switch ($uploadError) {
  23. case 1:
  24. case 2: die('上传文件不允许超过3M');
  25. case 3: die('上传文件不完整');
  26. case 4: die('没有文件被上传');
  27. default: die('未知错误');
  28. }
  29. }
  30. // 3. 判断文件扩展名是否正确?
  31. $extension = explode('.',$fileName)[1];
  32. if (!in_array($extension, $fileType)) {
  33. die('不允许上传' . $extension . '文件类型');
  34. }
  35. // 4. 为了防止同名文件相互覆盖, 应该将上传到指定目录的文件重命名,例如用md5+时间戳
  36. $fileName = date('YmdHis',time()).md5(mt_rand(1,99)) . '.' . $extension;
  37. // 5. 判断文件是否上传成功?
  38. // 判断是否是通过post上传的
  39. if (is_uploaded_file($tempFile)) {
  40. if (move_uploaded_file($tempFile, __DIR__ . $filePath.$fileName)) {
  41. // 提示用户上成功,并返回上一个页面,再强行刷新当前页面
  42. echo '<script>alert("上传成功");history.back();</script>';
  43. } else {
  44. die('文件无法移动到指定目录,请检查目录权限');
  45. }
  46. } else {
  47. die('非法操作');
  48. }
  49. exit();



Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:前端页面中, 隐藏域设置的文件大小值,仅供参考的, 没卵用, 可以轻易绕过的, 更多只是提示效果, 还是要靠后端代码控制
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post