【问题标题】:What is the difference between name and tmp_namename 和 tmp_name 有什么区别
【发布时间】:2016-05-03 15:25:52
【问题描述】:

您好,我尝试在线搜索,但确实找不到。 那么$_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'] 中文件的临时文件名 上传的文件存储在服务器上。

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

谢谢

【问题讨论】:

  • 临时文件在上传成功后自动删除。原名。好吧...保留上传文件的名称。这一切都在手册php.net/manual/en/features.file-upload.post-method.php 中。 “如果该文件没有被移走或重命名,它将在请求结束时从临时目录中删除。”
  • ^ 可能需要添加 tmp_name 是在使用 move_uploaded_file() 之前存储文件的位置
  • @Devon 我不需要引用“整个”手册 ;-) 它不适合这里 lol

标签: php


【解决方案1】:
$_FILES['file']['tmp_name']

在系统临时文件目录中提供存储在 Web 服务器硬盘上的文件的名称,除非使用 php.ini 中的 upload_tmp_dir 设置指定了另一个目录 em> 文件。仅当负责处理表单提交的 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

希望对你有帮助!

【讨论】:

  • 是否可以使用临时信息上传文件? $_FILES['tmp_name'] ?试图将它与文件扩展名(静态)连接起来。没用。有可能还是我必须使用move_uploaded_file()
【解决方案2】:

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

【讨论】:

  • 我的错,我以为 tmpname 是名称或临时名称...谢谢您的回答。
【解决方案3】:

当您将文件发送到服务器端脚本(php 或 asp 或...)时,服务器会将您的文件上传并移动到它自己的临时目录直到 strong>脚本文件的处理完成。然后它将从该目录中删除该文件。所以$_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>

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多