php上传文件限制

时间:2016-12-07 11:44:30

标签: php upload

我试图将上传限制为仅使用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);

    }

但是文件不再上传到目录,而且它接受任何扩展名。它在我的数据库中输入文件名。 我遵循了一个教程,但不确定我哪里出错了

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

使用PATHINFO_EXTENSION参数获取文件扩展名try 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函数之后你是否错过了括号,还是只是一个复制粘贴问题?