$ _FILES [“upload”] [“tmp_name”]是什么

时间:2017-09-12 08:30:16

标签: php

我有关于php的一般问题,我无法理解$ _FILES [“upload”] [“tmp_name”]是什么,我为什么要将文件上传到tmp文件夹,而不是直接进入永久文件夹? 感谢阅读,祝你有愉快的一天!

1 个答案:

答案 0 :(得分:1)

PHP解释器使用生成的名称将上载的文件放在临时目录中,并在运行PHP脚本之前将路径存储在$_FILES['...']['tmp_name']中。

您可以使用is_uploaded_file()确保$_FILES['...']['tmp_name']的内容确实是上传文件的路径(并且在请求中不会以某种方式欺骗)然后使用move_uploaded_file()来放置最终目的地的文件。

或者您也可以在不移动文件的情况下处理文件内容,以防您不需要存储文件。

无论哪种方式,当您的脚本结束时,解释器会删除它创建的临时文件以存储上传的内容。

代码通常如下:

if (is_uploaded_file($_FILES['abc']['tmp_name'])) {
    // Generate the path where to store the file
    // Depending on the expected file type you can use getimagesize() 
    // or mime_content_type() to find the correct file extension
    // and various ways to generate an unique file name (to not overwrite
    // the file already existing in the storage directory)
    $finalpath = '...';

    if (move_uploaded_file($_FILES['abc']['tmp_name'], $finalpath)) {
        // Successfully uploaded and processed.
    } else {
        // Cannot move the file; maybe there is a permissions issue
        // or the destination directory simply doesn't exist.
    }
} else {
    // The upload failed.
    // Check the value of $_FILES['abc']['error'] to find out why
    // (usually no file was uploaded or the file is too large).
}

了解处理file uploads的PHP方法。