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

12月9号- 文件上传

Eric
Eric原创
2019年12月10日 13:19:08529浏览

上传文件步骤:

  • 1、判断是否有选择图片或者判断文件名是否为空
  • 2、设置参数允许上传的文件类型、存放图片的文件名、获取文件参数等
  • 3、判断图片上传是否有错误
  • 4、判断文件是否符合文件类型
  • 5、判断上传文件的大小是否超过预设大小
  • 6、检测存放图片文件夹是否存在,不存在就创建
  • 7、设置新的文件名
  • 8、判断文件是否是由POST方法提交,并将临时文件移动到磁盘

index.php代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>文件上传</title>
  6. </head>
  7. <body>
  8. <form action="upload.php" method="post" enctype="multipart/form-data">
  9. <h3>图片上传</h3>
  10. <input type="file" name="image">
  11. <button>上传</button>
  12. </form>
  13. </body>
  14. </html>

upload.php代码:

  1. <?php
  2. // 1、判断是否有选择图片
  3. if (!isset($_FILES['image']) || empty($_FILES['image']['name'])) {
  4. echo '<script>alert("请选择图片");location.assign("index.php")</script>';
  5. exit;
  6. }
  7. // 2、设置所有参数
  8. $files = $_FILES['image'];
  9. $fileName = $files['name'];
  10. $tempFile = $files['tmp_name'];
  11. $fileSize = $files['size'];
  12. $errorCode = $files['error'];
  13. $fileType = ['jpg', 'jpeg', 'png', 'gif'];
  14. $uploads = 'uploads';
  15. // 3、判断图片是否上传成功
  16. if ($errorCode > 0) {
  17. switch ($errorCode) {
  18. case 1:
  19. die('上传文件超过了配置文件:upload_max_filesize 限制的最大值');
  20. case 2:
  21. die('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值');
  22. case 3:
  23. die('文件只有部分被上传');
  24. case 4:
  25. die('没有文件被上传');
  26. case 6:
  27. die('找不到临时文件');
  28. case 7:
  29. die('文件写入失败');
  30. default:
  31. die('未知错误');
  32. }
  33. }
  34. // 4、判断文件是否是被允许上传的类型
  35. $extension = explode('.', $fileName)[1];
  36. if (!in_array($extension, $fileType)) {
  37. echo "<script>alert('不允许上传该类型文件');history.go(-1);</script>";
  38. exit();
  39. }
  40. // 5、判断文件大小是否超过设置的最大上传限制
  41. $allowSize = 1024*1024*2;
  42. if ($fileSize > $allowSize){
  43. echo "<script>alert('文件大小不能超过2M');history.go(-1);</script>";
  44. exit();
  45. }
  46. // 6、检测存放图片的文件是否存在
  47. if (!file_exists($uploads)) {
  48. mkdir($uploads);
  49. }
  50. // 7、设置新文件名,避免文件重名
  51. $newFile = date('YmdHis', time()) . md5(mt_rand(10, 100)) . '.' . $extension;
  52. $path = __DIR__ . DIRECTORY_SEPARATOR . $uploads . DIRECTORY_SEPARATOR . $newFile;
  53. // 8、判断文件是否上传成功,并将文件从临时路径移动到磁盘
  54. if (is_uploaded_file($tempFile)){
  55. if (move_uploaded_file($tempFile, $path)){
  56. echo '<script>alert("文件上传成功!");history.back();</script>';
  57. }else{
  58. die('文件无法移动到指定目录,请检查目录权限');
  59. }
  60. }else{
  61. die('非法操作');
  62. }

代码效果:

课程总结:

  • 1、文件上传,即满足预设的条件参数,文件会先上传到临时文件地址,然后再将临时文件移动到磁盘的过程。
  • 2、history.go(-1)表示后退,history.go(-1)表示后退+刷新

THE END !

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