我没有从$ _FILES [“file”] [“type”]和$ _FILES [“file”] [“size”]获取数据,即使$ _FILES [“file”] [“name”]正在重新调整文件名

时间:2011-11-26 19:44:36

标签: php html file

$_FILES全局变量中,当我使用

  1. $_FILES["file"]["name"]:我收到了正在上传的文件的名称。
  2. $_FILES["file"]["type"]:我在这里得到空白数据。但是当我在这个变量(isset($_FILES["file"]["type"]))上使用ISSET函数时,它返回1。
  3. $_FILES["file"]["size"]:它返回零。
  4. 我真的不知道,这个问题的真正原因是什么? (因为我观察到这个问题在创建新记录时没有发生,即在表中添加新记录并将指定文件上传到服务器。 但是,只有在我尝试编辑现有记录时才会出现上述问题,即通过上传新文件将旧文件替换为新文件。)

2 个答案:

答案 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等):)