Blogger Information
Blog 6
fans 1
comment 0
visits 9176
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
单文件上传
笑看风云
Original
803 people have browsed it

包括 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. }
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