-3

目前我已经允许上传 .jpg 文件。

如何添加 jpeg、gif 和 png?

我当前的代码如下...

$filename = basename($_FILES['photo']['name']);
            $ext = substr($filename, strrpos($filename, '.') + 1);

            //Check if the file is JPEG image and it's size is less than 5Mb
$allowedExts = array('jpg', 'jpeg', 'gif', 'png');
            if ( (in_array($ext, $allowedExts)) && ($_FILES["photo"]["type"] == "image/jpeg") && ($_FILES["photo"]["size"] <= 5242880) ){
                //Determine the path to which we want to save this file
                $newname = str_replace( ' ', '_', trim( strip_tags( $_POST['name'] ) ) ) . _ . $formKey->generateKey() . '_' . time() . '.jpg';
4

2 回答 2

1

制作一组允许的扩展名,并对其进行检查。看看http://php.net/manual/en/function.in-array.php

你会以类似的方式结束:

$allowedExts = array('jpg', 'jpeg', 'gif'); // Add more here
if (in_array($ext, $allowedExts))
{
    // Do something here
}

另外,要检查文件的扩展名,我建议您使用 pathinfo:http://php.net/manual/en/function.pathinfo.php 有些人可以通过上传以 .jpg 结尾的文件来欺骗您,但这可能是 .php 文件。

[编辑]更新,因为我讨厌迷你评论:

   $allowedExtensions = array("image/jpeg", "image/png", "image/gif", "image/pjpeg", "image/jpg");
   $pathInfo = pathinfo($_FILES["photo"]["type"]);
   if (in_array($pathInfo['extension'], $allowedExtensions))
   {
       // Do stuff
   }

Waaaay这种方式更简单。这甚至可以通过使用 pathinfo 的第二个参数来简化,但我假设您之后需要数组的其他元素。

于 2012-10-28T11:44:37.457 回答
0

您可以使用以下内容:

if(file_exists($path_image) && in_array(exif_imagetype($path_image),array(1, 2, 3, 6))){ ... } 

http://php.net/manual/en/function.exif-imagetype.php

于 2014-12-01T13:34:10.770 回答