Php 正在检查已上载的文件,其中文件\已存在

Php 正在检查已上载的文件,其中文件\已存在,php,file-upload,Php,File Upload,我有一个表单,用于将数据上传到数据库。该表单有许多输入字段,范围包括表单文本、数字、文本区域和文件(图像) 提交表单时,我会检查是否有上传的图像,如果有,检查上传的图像是否通过了一系列检查(低于最大文件大小、正确的扩展名等),并将整个过程设置为try/catch块,以便在任何检查失败时抛出异常 我的支票如下: $upload=$_FILES['Upload']['tmp_name']; if(isset($upload)) { if(!empty($upload) &&

我有一个表单,用于将数据上传到数据库。该表单有许多输入字段,范围包括表单文本、数字、文本区域和文件(图像)

提交表单时,我会检查是否有上传的图像,如果有,检查上传的图像是否通过了一系列检查(低于最大文件大小、正确的扩展名等),并将整个过程设置为try/catch块,以便在任何检查失败时抛出异常

我的支票如下:

$upload=$_FILES['Upload']['tmp_name'];
if(isset($upload))
{
    if(!empty($upload) && is_uploaded_file($upload))
    {
        //Checks file size,extension and uploads the file
    }
    else
    {
        //throw new Exception
    }
}
else
{
    //throw new Exception
}
但是,当使用上述方法时,即使没有上传任何文件,isset也会返回true。在谷歌搜索并查看堆栈溢出时,特别是在声明isset将返回true,因为$_文件是超全局文件的情况下,我四处寻找解决方案,最终确定使用文件_exists()替换isset()在我的代码中

我使用file_exists()的理由是,上载(提交)的文件将在上载过程中存储在临时目录中,如果我检查此临时目录,我将能够确定是否确实上载了文件

在用文件_exists替换isset()之后,我的代码现在运行良好,但我想知道这是否是正确的方法,或者是否有其他更好的替代方法

我期待任何意见和/或建议。

我将使用
$\u文件提供的:

if($_FILES['Upload']['error'] == UPLOAD_ERR_OK) {
    //seems to have worked
}
您甚至可以检查其他错误代码,例如文件是否太大等

$upload=$_FILES['Upload']['tmp_name'];
if($upload)
{}
这将给出文件临时名称或null