首页 文章

使用file_exists检查上传的文件

提问于
浏览
1

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

提交表单时,我检查是否有上传的图像,如果是,请检查上传的图像是否通过一系列检查(低于最大文件大小,正确的扩展名等),整个过程在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 . 使用google搜索并查看堆栈溢出,特别是isset and !empty not passing through a check for uploaded files,其中声明isset将返回true,因为$ _FILES是一个超全局,我四处寻找解决方案并最终在我的代码中将file_exists()作为isset()的替代 .

我使用file_exists()的基本原理是上传(提交)的文件将在上传过程中存储在临时目录中,如果我检查这个临时目录,我将能够确定文件是否真的上传 .

用file_exists替换isset()后,我的代码现在工作正常,但我想知道这是否是正确的继续进行方式,或者是否还有其他更好的选择 .

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

2 回答

  • 0

    我会使用 $_FILES 给出的error-code

    if($_FILES['Upload']['error'] == UPLOAD_ERR_OK) {
        //seems to have worked
    }
    

    甚至还有其他可以检查的错误代码,例如,如果文件是大的等等 .

  • 0
    $upload=$_FILES['Upload']['tmp_name'];
    if($upload)
    {}
    

    这将为文件提供临时名称或null .

相关问题