name和tmp_name之间有什么区别

时间:2016-05-03 15:25:53

标签: php

您好我尝试在线搜索但实际上找不到它。 那么$_FILES['file']['name']$_FILES['file']['tmp_name']之间的区别是什么,或$_FILES['file']['tmp_name']究竟是什么?

根据http://php.net/manual/en/features.file-upload.post-method.php

  

$ _ FILES ['userfile'] ['name']文件的原始名称   客户机。

     

$ _ FILES ['userfile'] ['tmp_name']文件的临时文件名   上传的文件存储在服务器上。

那么临时文件名和原始文件名有什么区别?

谢谢

4 个答案:

答案 0 :(得分:7)

$_FILES['file']['tmp_name']

提供存储在系统临时文件目录中Web服务器硬盘上的文件的名称,除非使用 php.ini中的 upload_tmp_dir 设置指定了另一个目录文件。只要负责处理表单提交的PHP脚本正在运行,就会保留此文件。因此,如果您想稍后使用上传的文件(例如,将其存储以在网站上显示),您需要在其他地方复制它。

  

要执行此操作,您可以使用移动的 move_uploaded_file()函数   上传的文件从临时位置到永久位置。请注意   你最好使用 move_uploaded_file()这样的函数    copy() rename()用于此目的,因为它执行额外的检查以确保文件确实由HTTP上传   POST请求。

$_FILES['file']['name']

在提交之前提供客户端计算机上文件的名称。如果您制作临时文件的永久副本,则可能需要为其指定原始名称,而不是上面描述的自动生成的临时文件名。

总而言之:

$_FILES["file"]["name"] //stores the original filename from the client
$_FILES["file"]["tmp_name"] //stores the name of the temporary file

希望它有所帮助!

答案 1 :(得分:5)

您的文件将临时存储在此路径上$ _FILES [' image_path'] [' tmp_name']。因此,当您移动它时,将从临时文件夹中删除到您的文件夹。如果您使用copy命令而不是move_uploaded_file,那么您的临时文件将保留在服务器的临时文件夹中。你可以在那里搜索文件名。

答案 2 :(得分:2)

当您将文件发送到服务器端脚本(php或asp或...)时,服务器将上传并移动文件到其自身的临时目录直到脚本文件的处理完成。然后它将从该目录中删除文件。因此$_FILES['file']['tmp_name']是该临时文件的路径(而非名称)

所以让我们检查/看一下:由于php文件的处理非常快,尤其是在xampp这样的虚拟服务器上,因此创建tmp文件时我们看不到它。因此,我们使用php的sleep()函数来查看正在发生的事情,这是一个页面,其中包含一个非常简单的php代码,这就是发生的情况:

  1. 我们选择一个文件(注意已发送)
  2. 我们按上传按钮(文件将上传到服务器的tmp目录)
  3. 在(4 +ε)秒后,运行php脚本将完成,并且临时文件将从tmp目录中删除
<?php
if (isset($_POST['submit'])) {
    sleep (4);
    echo $_FILES['fileToUpload']['tmp_name'];
}

?>
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        Select image to upload:
        <input onchange="uImage(event)" type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload Image" name="submit">
    </form>
</body>
</html>

enter image description here

note1:对于php服务器,您可以在php.ini文件中找到服务器的临时路径。这是该文件中upload_tmp_dir的值

答案 3 :(得分:0)

tmp_name是由php自动生成并存储在服务器上的临时文件夹中的上载文件的临时名称。

name是存储在本地计算机上的文件的原始名称。