文件上传过程中临时文件名的作用是什么


What is point of a temporary file name during a file upload?

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

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

我认为这与防止名字碰撞有关,是真的吗?还有其他原因吗?我使用的是PHP语法,但我想这个概念会适用于所有语言吗?

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

编辑:

当你上传一个文件时,它被物理地存储在服务器的硬盘上。文件的名称(而不是整个路径)将在您的PHP中的$_FILES['x']['tmp_name']变量下可用。您应该使用move_uploaded_file()函数来移动文件。此函数知道存储文件的目录的路径,因此能够将文件移动到新位置。

$_FILE['x']['name'] / ['type']实际上是完全无用的,因为它们是在文件上传过程中由浏览器设置的,因此它们可能存储虚假信息。

因为当有人上传文件时,除非你将其保存在某个地方,否则在你明确将其保存到其他地方之前,它不会真正以"名称"在磁盘上。在此之前,它的内容只能在临时文件中找到。