名字和tmp_name之间有什么区别?

21

您好,我尝试在网上搜索了一下,但真的找不到答案。

$_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']上传文件存储在服务器上的临时文件名。

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

谢谢


临时文件在成功上传后会自动删除。原始名称...保留上传的文件名称。所有内容都在手册中http://php.net/manual/en/features.file-upload.post-method.php。*"如果文件没有被移动或重命名,它将在请求结束时从临时目录中删除。"* - Funk Forty Niner
可能需要补充一下,tmp_name是在使用move_uploaded_file()之前文件存储的位置。 - Devon
@Devon 我不需要引用“整个”手册;-) 它不适合在这里 - Funk Forty Niner
4个回答

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

提供存储在系统临时文件目录中的网络服务器硬盘上的文件名称,除非使用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
能否使用临时信息上传文件? $_FILES['tmp_name']?尝试将其与文件扩展名(静态地)连接起来。但是没有成功。是否有可能,还是必须使用move_uploaded_file() - PlayHardGoPro

14

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


我的错,我以为tmpname是名称或临时名称...感谢你的回答。 - James Chen

8

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

那么让我们来看一下:由于PHP文件的处理速度特别快,尤其是在像XAMPP这样的虚拟服务器上,所以我们无法在创建临时文件时看到它们。因此,我们使用PHP的sleep()函数来确切地查看发生了什么情况。这里我们有一个包含非常简单的PHP代码的单个页面,其内容如下:

  1. 我们选择一个文件(尚未发送任何内容)
  2. 我们点击上传按钮(文件将上传到服务器的临时目录中)
  3. 在(4+ε)秒之后,正在运行的PHP脚本将完成,并且临时文件将从临时目录中删除
<?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>

这里输入图片描述

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


2

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接