$_FILES["file"]["tmp_name"]
有什么意义?
我知道它是存储在服务器上的文件的临时副本的名称,但为什么在$_FILES["file"]["name"]
时我们需要这个?
我认为它与防止名称冲突有关,这是真的吗?还有其他原因吗?我正在使用PHP语法,但我猜这个概念适用于所有语言?
答案 0 :(得分:4)
$_FILES['x']['name']
将文件名存储在用户的文件系统中 - 这只是浏览器设置的额外信息 - 就像$_FILES['x']['type']
一样。$_FILES['x']['tmp_name']
将上传文件的名称存储在服务器上。当您上传文件时,它会以虚拟方式存储在服务器的硬盘上。在$_FILES['x']['tmp_name']
变量下的PHP中将提供文件的名称(而不是整个路径)。您应该使用move_uploaded_file()
功能移动文件。此函数知道存储文件的目录的路径,因此它能够将文件移动到新位置。
$_FILE['x']['name'] / ['type']
实际上完全没用,因为浏览器在文件上传期间设置了它们,因此它们可以存储错误信息。
答案 1 :(得分:1)
因为当有人上传文件时,直到你把它保存到某个地方,它才真正在'name'下的磁盘上,直到你明确地将它保存在其他地方。在此之前,它的内容只能在临时文件中找到。