为什么我们不能使用$ _POST而不是$ _FILES来访问PHP中的上载文件?

时间:2019-01-31 17:15:59

标签: php file-upload

当我尝试使用$_POST访问上载的文件时,我没有得到任何信息,但是如果我使用$_FILES,我将获得所有与上载的文件相关的信息。

为什么我们不能使用$_POST而不是$_FILES

1 个答案:

答案 0 :(得分:2)

这是 一种语言设计决策 ,它是PHP的创建者早就做出的。您可以询问PHP Rasmus Lerdorf(https://en.wikipedia.org/wiki/Rasmus_Lerdorf)的创建者。

但是,我有一些很好的理由可以考虑将$_POST$_FILES分开。

从文档中

  

全局$ _FILES将包含所有上载的文件信息。 [...]   默认情况下,文件将存储在服务器的默认临时目录中   目录,除非已使用   php.ini中的upload_tmp_dir指令。服务器的默认目录   可以通过在环境变量中设置环境变量TMPDIR来更改   运行PHP的环境。从一个内部使用putenv()进行设置   PHP脚本不起作用。也可以使用此环境变量   确保其他操作正在处理上传的文件,例如   好吧。

$_FILES数组包含诸如名称,类型,大小,临时名称,错误信息,临时位置等信息。因此,对于文件而言,需要大量信息,并且文件中的其他数据存储在临时位置。

$_POST数组基本上只包含提交的文本字符串。因此,我猜测做出设计决定仅仅是因为清楚区分这些变量很有用。