php上传文件限制

php upload file restrictions

我试图将我的上传限制为仅上传带有 pdf 的文件扩展名。 我之前已经成功上传,但使用任何扩展名 ;

$form = $_FILES['form']['name'];
$upload = "forms/$form";
move_uploaded_file($_FILES['form']['tmp_name'],$upload);

我现在正在尝试将其调整为仅上传 pdf,使用以下内容;

if (isset($_FILES['file']))
    $exten = explode( "." , $_FILES['form']['name']);
    $exten = $exten[1];
    $form = $_FILES['form']['name'];
    $upload = "forms/$form";

    if (
        ($exten == "pdf")
    ||  ($exten == "PDF")){
    move_uploaded_file($_FILES['form']['tmp_name'] , $upload);

    }

但是文件不再上传到目录,而且它接受任何扩展名。它正在我的数据库中输入文件名。 我按照教程进行了此操作,但不确定哪里出错了

您可以这样检查文件类型:

if ($_FILES['form']['type'] == 'application/pdf') {
    move_uploaded_file($_FILES['form']['tmp_name'] , $_FILES['form']['name']);
}

$_FILES['form']['type'] 包含上传文件的 MIME 类型

http://php.net/manual/en/features.file-upload.post-method.php

要获取文件扩展名,请尝试使用 PATHINFO_EXTENSION 参数 pathinfo,这会节省您的时间

您还应该使用 strtolower 函数进行比较,因为例如 .PdF/.PDF 扩展名将被您编写的条件意外拒绝

if (isset($_FILES['file'])) {
    $exten = pathinfo($_FILES['form']['name'], PATHINFO_EXTENSION);
    $form = $_FILES['form']['name'];
    $upload = "forms/$form";

    if (strtolower($exten) == 'pdf'){
    move_uploaded_file($_FILES['form']['tmp_name'] , $upload);

    }
}

PS:您是否在 isset 函数后遗漏了括号,或者仅仅是复制粘贴问题?