为什么在这个例子中使用tmp_name

时间:2015-02-15 16:57:47

标签: php file upload

我是php的新手。我正在浏览文件上传的例子。我在getimagesize()函数$_FILES['file']['temp_name']内使用。当我回显$ _FILES ['file'] ['temp_name ']它显示以下输出:

  

C:\ XAMPP \ TMP \ phpDE4B.tmp

我的问题是:

1.为什么在getimagesize()函数中使用tmp_name而不是原始名称。

2.为什么创建这个tmp_name?

3.如何生成?

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}

2 个答案:

答案 0 :(得分:3)

临时文件是作为文件上载过程的一部分生成的,直接在PHP和Web服务器之间处理。

使用临时文件,以便userland代码可以将文件移动到服务器上的最终目标文件夹 - 最终目标文件夹不是可以在http请求中传递或由Web服务器处理的信息,因为这完全取决于您的申请。如果文件未移动到其最终目标文件夹,则临时文件将在请求结束时自动删除

在这种情况下,代码是验证过程的一部分,以确保文件在 移动到其最终目标文件夹之前声称为 (假设这是一个有效的文件。)

答案 1 :(得分:1)

当某个文件上传到服务器时,它会被放在临时目录中以便使用它。为了不在名称中发生冲突,分配临时名称。

1)您需要将文件路径传递给getimagesize(),因为您不仅可以使用已保存的文件。

2)创建Tmp_name是为了避免冲突,但如果需要,可以获得原始名称。

3)临时目录中只有一些随机生成的名称。