博客列表 >12月9号作业 文件上传

12月9号作业 文件上传

遗忘了寂寞
遗忘了寂寞原创
2019年12月11日 21:55:13629浏览

前端页面 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();



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议