在$_FILES
全局变量中,当我使用
$_FILES["file"]["name"]
:我收到了正在上传的文件的名称。$_FILES["file"]["type"]
:我在这里得到空白数据。但是当我在这个变量(isset($_FILES["file"]["type"])
)上使用ISSET函数时,它返回1。$_FILES["file"]["size"]
:它返回零。我真的不知道,这个问题的真正原因是什么? (因为我观察到这个问题在创建新记录时没有发生,即在表中添加新记录并将指定文件上传到服务器。 但是,只有在我尝试编辑现有记录时才会出现上述问题,即通过上传新文件将旧文件替换为新文件。)
答案 0 :(得分:2)
来自manual ...
If no file is selected for upload in your form, PHP will return $_FILES['userfile']['size'] as 0, and $_FILES['userfile']['tmp_name'] as none.
此外,当您检查$_FILES["file"]["type"]
时,isset会返回true,因为它已设置,即变量存在,但其值为空。而不是isset,请使用if (empty($_FILES["file"]["type"]))
您不应该信任$_FILES["file"]["type"]
,因为它可能被用户欺骗,或者只是完全错误。
只有在没有上传文件的情况下,您才会收到上述错误吗?或者是上传的文件?可能是文件出错,因此未设置数组的那些部分。
发布更多代码和更具描述性的问题解释以及如何重现它,我们可以提供更多帮助。
答案 1 :(得分:0)
前几天让我绊倒的东西 - 确保php可以访问写入tmp文件的目标目录。它应该在open_basedir中并且可以由您的服务器写入(apache / nginx等):)