博主信息
博文 19
粉丝 1
评论 0
访问量 20530
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
文件上传类的尝试
海阔天空
原创
975人浏览过

文件上传

-包括三个文件
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、常用的数组函数、字符串函数必须熟记活用。
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:这个案例做完, 简单的逻辑业务封装, 应该难不倒你了, 恭喜你
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学