PHP文件上传流程
1、单击提交按钮,浏览器用户将包含上传文件的表单数据提交给PHP处理程序
2、 Web服务器和PHP预处理器首先判断表单数据的大小是否超过php.ini配置文件中的post_max_size选项设置的上限值。
若超过,PHP处理程序将无法得到任何表单数据,此时不仅上传文件失败,而且表单控件中填写的数据也会提交失败,也就是说:PHP处理程序预定义变量$_GET、$_POST、$_FILES将为空数组。若没有超过,文件上传进入第3步检验。
3. 检验表单中的文件大小是否超过表单隐藏域MAX_FILE_SIZE设置的上限值。
若超过,PHP预处理器返回状态码2,文件上传失败。
若没有超过,文件上传进入第4步检验。
(当有多个文件进行上传时,某个文件上传框导致的文件上传失败,不会影响其他文件上传框的上传结果)
4. 检验表单中的文件是否超过php.ini配置文件中upload_max_filesize选项设置的上限值。
若超过,PHP预处理器返回状态码1,文件上传失败。
若没有超过,文件上传进入第5步检验。
5. PHP实现上传文件需要在php.ini配置文件upload_tmp_dir选项定义的目录中创建一个与上传文件一一对应的临时文件(默认拓展名为tmp),上传成功后,临时文件立即消失,此时PHP预处理器的返回状态码0。
但是有时由于默写原因(如max_execution_time选项设置过小或者网速慢等原因),上传部分文件后不再继续上传剩余文件,导致文件上传失败,此时PHP预处理器返回状态码3
若通过,文件上传进入第6步检验。
6. 实现文件上传的关键一步在于在临时文件消失前,需要将临时文件保存到Web服务器或文件服务器。PHP提供的两个函数:is_uploaded_file()函数和move_uploaded_file()函数,可以帮助完成这一步的工作
多个文件上传要注意的就是相同的name保存的文件内容是按照下面的形式放在数组中的。是五个数组,按照文件的五个参数分别存放的,并非三个数组。所以如果直接使用count($_FILES[‘$myPicture’]),答案为5。
array (size=5) 'name' => array (size=3) 0 => string '1.txt' (length=5) 1 => string '2.txt' (length=5) 2 => string '3.txt' (length=5) 'type' => array (size=3) 0 => string 'text/plain' (length=10) 1 => string 'text/plain' (length=10) 2 => string 'text/plain' (length=10) 'tmp_name' => array (size=3) 0 => string 'D:\wamp64\tmp\phpC5E8.tmp' (length=25) 1 => string 'D:\wamp64\tmp\phpC5E9.tmp' (length=25) 2 => string 'D:\wamp64\tmp\phpC5EA.tmp' (length=25) 'error' => array (size=3) 0 => int 0 1 => int 0 2 => int 0 'size' => array (size=3) 0 => int 0 1 => int 0 2 => int 0
index.php文件
<form action="fileSystem.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> <input type="file" name="myPicture[]" size= "25" maxlength="100"><br> <input type="file" name="myPicture[]" size= "25" maxlength="100"><br> <input type="file" name="myPicture[]" size= "25" maxlength="100"><br> <input type="submit" value="提交"> </form>
fileSystem文件
<?php if (empty($_POST)) { exit("提交的表单数据超过post_max_size的配置"); } $arr = $_FILES['myPicture']; $file =array(); for ($i=0; $i < count($arr['name']); $i++) { $file[$i]['name'] = $arr['name'][$i]; $file[$i]['type'] = $arr['type'][$i]; $file[$i]['tmp_name'] = $arr['tmp_name'][$i]; $file[$i]['error'] = $arr['error'][$i]; $file[$i]['size'] = $arr['size'][$i]; } for ($i=0; $i < count($file); $i++) { switch ($file[$i]['error']) { case 0: $fileName = $file[$i]['name']; $fileTemp = $file[$i]['tmp_name']; $destination = "uploads/" . $file[$i]['name']; move_uploaded_file($fileTemp, $destination); echo "上传成功"; break; case 1: echo "上传附件超过php.ini中的upload_max_filesize选项的限制"; break; case 2: echo "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值"; break; case 3: echo "附件只有部分被上传"; break; case 4: echo "没有选择上传附件"; break; } } ?>
【相关教程推荐】
1. php编程从入门到精通全套视频教程
2. php从入门到精通
3. bootstrap教程

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

记事本++7.3.1
好用且免费的代码编辑器