文件上传期间临时文件名的重点是什么?

时间:2012-07-15 18:09:00

标签: php file-upload temporary-files

$_FILES["file"]["tmp_name"]有什么意义?

我知道它是存储在服务器上的文件的临时副本的名称,但为什么在$_FILES["file"]["name"]时我们需要这个?

我认为它与防止名称冲突有关,这是真的吗?还有其他原因吗?我正在使用PHP语法,但我猜这个概念适用于所有语言?

2 个答案:

答案 0 :(得分:4)

  1. 这不是PHP语法。
  2. $_FILES['x']['name']将文件名存储在用户的文件系统中 - 这只是浏览器设置的额外信息 - 就像$_FILES['x']['type']一样。
  3. $_FILES['x']['tmp_name']将上传文件的名称存储在服务器上。
  4. 编辑:

    当您上传文件时,它会以虚拟方式存储在服务器的硬盘上。在$_FILES['x']['tmp_name']变量下的PHP中将提供文件的名称(而不是整个路径)。您应该使用move_uploaded_file()功能移动文件。此函数知道存储文件的目录的路径,因此它能够将文件移动到新位置。

    $_FILE['x']['name'] / ['type']实际上完全没用,因为浏览器在文件上传期间设置了它们,因此它们可以存储错误信息。

答案 1 :(得分:1)

因为当有人上传文件时,直到你把它保存到某个地方,它才真正在'name'下的磁盘上,直到你明确地将它保存在其他地方。在此之前,它的内容只能在临时文件中找到。