【问题标题】:Only allow image files to be uploaded to my server with PHP只允许使用 PHP 将图像文件上传到我的服务器
【发布时间】:2014-11-09 22:27:58
【问题描述】:

我正在尝试根据 MIME 类型制作一个仅允许上传 .png、.jpeg 和 .gif 文件的脚本。我到目前为止是这样的:

if(file_exists($root."/upload/gallery/".$_FILES["image"]["name"]))
{
    $filename = explode(".",$_FILES['image']['name']);
    $randomnumber = rand(0, 10000);
    $imageName = $filename[0].$randomnumber.".".$filename[1];
}
else
{
    $imageName = $_FILES['image']['name'];
}

$image = mysql_real_escape_string(htmlspecialchars("/upload/gallery/".$imageName));

$allowed = array('image/jpeg', 'image/png', 'image/gif');

if(in_array($_FILES['image']['name'], $allowed)){
    echo "Allowed!";
    die;
}
else {
    echo "Not allowed!";
    die;
}

我几乎可以肯定这应该可行。但是当我选择具有正确 MIME 类型的文件时,它总是回显Not allowed!,我在这里做错了什么?该代码包括检查我的上传文件夹中已经具有相同名称的文件,如果是,则在文件名中添加一个随机数。

【问题讨论】:

    标签: php file-upload mime-types


    【解决方案1】:

    您将允许的列表与文件 name 进行比较,而不是类型。

    文件的类型将包含在适用类型的数组中:

    $_FILES['image']['type']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 2016-03-29
      • 1970-01-01
      • 2011-07-31
      • 2019-06-11
      • 2013-11-02
      • 1970-01-01
      相关资源
      最近更新 更多