博客列表 >单文件上传

单文件上传

笑看风云
笑看风云原创
2019年12月10日 13:58:01799浏览

包括 one.html 和 one.php 两个文件

one.html

代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>单文件上传</title>
  6. <style>
  7. div {
  8. margin: 20px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <div>
  14. <form action="one.php" method="post" enctype="multipart/form-data">
  15. <input type="file" name="one_file">
  16. <button>上传</button>
  17. </form>
  18. </div>
  19. </body>
  20. </html>

one.php

代码如下:

  1. <?php
  2. /*
  3. * 操作步骤:
  4. * 一、先获取文件相关信息
  5. * 二、分步骤判断是否符合上传条件
  6. * 三、上传条件全部符合,则正式上传并保存
  7. */
  8. $file_type_cfg = ['jpg', 'jpeg', 'png', 'gif'];
  9. $file_size_cfg = 1024 * 1024 * 10; //不超过 10 M
  10. $file_path_cfg = __DIR__ . '/uploads/one/';
  11. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  12. if ($_FILES) {
  13. /* 一、先获取文件相关信息 */
  14. //获取文件的原始文件名
  15. $file_name = $_FILES['one_file']['name'];
  16. //获取文件的临时文件名
  17. $file_tmp_name = $_FILES['one_file']['tmp_name'];
  18. //获取文件的错误代码
  19. $file_error = $_FILES['one_file']['error'];
  20. //获取文件的文件类型
  21. $file_type = $_FILES['one_file']['type'];
  22. //目录分隔符 DIRECTORY_SEPARATOR 不起作用
  23. $file_extension = explode('/', $file_type)[1];
  24. //获取文件的文件大小
  25. $file_size = $_FILES['one_file']['size'];
  26. /*
  27. echo $file_name . '<br/>' . $file_tmp_name . '<br/>'
  28. . $file_error . '<br/>' . $file_type . '<br/>'
  29. . $file_size . '<br/>';
  30. */
  31. /* 二、分步骤判断是否符合上传条件 */
  32. //1、判断错误代码
  33. if ($file_error > 0) {
  34. switch ($file_error) {
  35. case UPLOAD_ERR_INI_SIZE:
  36. case 1:
  37. die('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。');
  38. case UPLOAD_ERR_FORM_SIZE:
  39. case 2:
  40. die('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。');
  41. case UPLOAD_ERR_PARTIAL:
  42. case 3:
  43. die('文件只有部分被上传。');
  44. case UPLOAD_ERR_NO_FILE:
  45. case 4:
  46. die('没有文件被上传。');
  47. case UPLOAD_ERR_NO_TMP_DIR:
  48. case 6:
  49. die('找不到临时文件夹。');
  50. case UPLOAD_ERR_CANT_WRITE:
  51. case 7:
  52. die('文件写入失败。');
  53. // 错误信息参考地址: https://www.php.net/manual/zh/features.file-upload.errors.php
  54. }
  55. }
  56. //2、判断扩展名是否允许
  57. if (!in_array($file_extension, $file_type_cfg)) {
  58. die("不允许上传 {$file_extension} 类型的文件");
  59. }
  60. //3、判断上传文件的大小
  61. if ($file_size > $file_size_cfg) {
  62. die("不允许上传超过 10M 的文件");
  63. }
  64. /* 三、上传条件全部符合,则正式上传并保存 */
  65. //正式上传和保存文件
  66. if (is_uploaded_file($file_tmp_name)) {
  67. //生成不重复的临时文件名
  68. $save_tmp_name = date('YmdHis', time()) . md5(mt_rand(10, 100)) . '.' . $file_extension;
  69. $save_file_path = $file_path_cfg . $save_tmp_name;
  70. if (move_uploaded_file($file_tmp_name, $save_file_path)) {
  71. echo "{$file_name} 保存路径为:{$save_file_path}";
  72. } else {
  73. die('文件上传操作失败!');
  74. }
  75. } else {
  76. die('您进行了非法操作哦!');
  77. }
  78. }
  79. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议