Blogger Information
Blog 19
fans 1
comment 0
visits 15276
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
文件上传类的尝试
海阔天空
Original
845 people have browsed it

文件上传

-包括三个文件
1、文件上传页面。在该页面选择上传文件后,调用文件上传类
2、在文件上传类中,进行判断,上传成功且是图片文件类型的,保存文件并进行预览;否则调用错误类型判断类。
3、错误类型判断类,识别错误类型,列出错误信息。

效果图如下:

文件上传页面代码

  1. <?php
  2. require_once "upload.php";
  3. (new upload)->uploadfile('my_pic');
  4. ?>
  5. <!DOCTYPE html>
  6. <html lang="en">
  7. <head>
  8. <meta charset="UTF-8">
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  10. <title>文件上传变量$_FILES</title>
  11. <style>
  12. *{
  13. margin: 0;
  14. padding:0
  15. }
  16. .container {
  17. width:450px;
  18. height:150px;
  19. margin:50px auto;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="container">
  25. <form action="" method="POST" enctype="multipart/form-data">
  26. <fieldset>
  27. <legend>多文件上传</legend>
  28. <input type="hidden" name="MAX_FILE_SIZE" value="3000000">
  29. <!-- 将name属性值能数组的形式提供 -->
  30. <input type="file" name="my_pic[]" multiple>
  31. <button>上传</button>
  32. </fieldset>
  33. </form>
  34. </div>
  35. </body>
  36. </html>

文件上传类代码

  1. <?php
  2. require_once "error.php";
  3. class upload{
  4. protected $uploadFilename;
  5. public function uploadfile($name){
  6. $this->uploadFilename=$name;
  7. if (!empty($_FILES[$this->uploadFilename])){
  8. foreach ($_FILES[$this->uploadFilename]['error'] as $key => $error) {
  9. $fileType=strstr($_FILES[$this->uploadFilename]['type'][$key], '/', true);
  10. // 原始文件名
  11. $originalFileName = $_FILES[$this->uploadFilename]['name'][$key];
  12. if ($error === UPLOAD_ERR_OK && $fileType === 'image') {
  13. // 临时文件名
  14. $tmpFileName = $_FILES[$this->uploadFilename]['tmp_name'][$key];
  15. // 目标文件名
  16. $destFileName = 'uploads/'. md5(time().mt_rand(1,1000)).strstr($originalFileName, '.');
  17. // 移动文件
  18. move_uploaded_file($tmpFileName, $destFileName);
  19. // 预览
  20. echo "<img src='{$destFileName}' width='200'>","{$originalFileName} 上传成功!",'<br>';
  21. }else
  22. {
  23. (new UploadException)->judgerror($error,$fileType);
  24. echo "{$originalFileName} 上传失败!",'<br>';
  25. }
  26. }
  27. }
  28. }
  29. }
  30. ?>

总结:

  • 1、第一次尝试,感觉类的封装增加了程序的简洁、清晰,实现了代码的复用。
  • 2、感觉文件上传方式,老师讲的多文件批量上传,利用 <input type="file" name="my_pic[]" multiple>,即可实现单文件上传,也可多文件批量上传,非常方便。
  • 3、常用的数组函数、字符串函数必须熟记活用。
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