热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高手教你PHP上传多张图片

学习PHP时,你可能会遇到PHP上传多张图片问题,这里将介绍PHP上传多张图片问题的解决方法,在这里拿出来和大家分享一下。单张的图片上传是不复杂的,这里涉及到PHP上传多张图片和对

学习PHP时,你可能会遇到PHP上传多张图片问题,这里将介绍PHP上传多张图片问题的解决方法,在这里拿出来和大家分享一下。单张的图片上传是不复杂的,这里涉及到PHP上传多张图片和对图片格式的校验,保证上传的一定是图片,防止上传其他文件到服务器。

基本实现算法是使用数组的形式,把所有的图片提交个一个数组,对数组的元素进行一个个的处理。PHP其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。PHP可以和各种Web服务器结合,这里也只讨论Apache。非常建议以chroot方式安装启动Apache,这样即使Apache和PHP及其脚本出现漏洞,受影响的也只有这个禁锢的系统,不会危害实际系统。以下为引用的内容:

  1. php 
  2.  
  3. //图片目录  
  4. $img_dir=../upload/;  
  5. //……html显示上传界面  
  6.  
  7. /*图片上传处理*/  
  8. //把图片传到服务器  
  9. //初始化变量  
  10.  
  11. $uploaded=0;  
  12. $unuploaded=0;  
  13.  
  14. //只允许五张图片上传  
  15.  
  16. for($i=0;$i<=5;$i++)  
  17. {  
  18. //获取当前图片的信息  
  19. $is_file=$_FILES[imgfile][name][$i];  
  20. //如果当前图片不为空  
  21. if(!empty($is_file))  
  22. {  
  23. //把当前图片的信息存储到变量里  
  24. $result[$i]=  
  25. <trclasstrclass=td2align=center> 
  26. <td>.$_FILES[imgfile][name][$i].td> 
  27. <td>.round($_FILES[imgfile][size][$i]/1024,2).Ktd> 
  28. <td>.$_FILES[imgfile][type][$i].td> 
  29. <td>;  
  30.  
  31. //判断上传的图片的类型是不是jpg,gif,png,bmp中的一种,同时判断是否上传成功  
  32. if(  
  33.  
  34. $_FILES[imgfile][type][$i]==image/pjpeg||  
  35. $_FILES[imgfile][type][$i]==image/gif||  
  36. $_FILES[imgfile][type][$i]==image/x-png||  
  37. $_FILES[imgfile][type][$i]==image/bmp  
  38. )  
  39. {  
  40. //如果上传的文件没有在服务器上存在  
  41. if(!file_exists($img_dir.$_FILES[imgfile][name][$i]))  
  42. {  
  43. //把图片文件从临时文件夹中转移到我们指定上传的目录中  
  44. move_uploaded_file($_FILES[imgfile][tmp_name][$i],  
  45. $img_dir.$_FILES[imgfile][name][$i]);  
  46. $result[$i].=成功;  
  47. $uploaded++;  
  48. }  
  49. else//如果文件已经在服务器上存在  
  50. {  
  51. $result[$i].=文件已存在;  
  52. $unuploaded++;  
  53. continue;  
  54. }  
  55. }  
  56. else  
  57. {  
  58. $result[$i].=失败;  
  59. $unuploaded++;  
  60. }  
  61. $result[$i].=;  
  62. }//endif  
  63. }//endfor  
  64.  
  65.  
  66. //如果没有选择任何图片  
  67. if(empty($result))  
  68. {  
  69. prompt_msg(错误信息,没有选择任何图片。,返回上一步,uploadimg.php?action=upload);  
  70. exit();  
  71. }  
  72.  
  73. //显示所有上传后的结果  
  74. echo<tablecellpaddingtablecellpadding=4cellspacing=1border=0class=tablewidth=400align=left> 
  75. <trclasstrclass=navialign=center> 
  76. <td>文件名td> 
  77. <td>大小td> 
  78. <td>类型td> 
  79. <td>上传结果td> 
  80. tr> 
  81. ;  
  82.  
  83. foreach($resultas$value)  
  84. {  
  85. echo$value;  
  86. }  
  87.  
  88. echo<trclasstrclass=td1> 
  89. <tdcolspantdcolspan=4>共上传.($uploaded+$unuploaded).,成功:$uploaded,失败:<fontcolorfontcolor=red>$unuploadedfont>td> 
  90. tr> 
  91. <trclasstrclass=navi> 
  92. <tdcolspantdcolspan=4align=center>[<ahrefahref=uploadimg.php?action=uploadtitle=继续上传>继续上传a>]
        [
    <ahrefahref=image.phptitle=浏览图片>浏览图片a>]td> 
  93. tr> 
  94. table> 
  95. ;  
  96. ?> 



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
author-avatar
会长大的幸福7007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有