【问题标题】:Check image type in php [duplicate]检查php中的图像类型[重复]
【发布时间】:2014-09-02 04:56:58
【问题描述】:

我在检查图像是否为 png、gif、jpg、jpeg 时遇到问题。我尝试使用 getimagesize(path to file),但它需要完整的图像路径,因为我只有 image1.jpg 的图像名称。我想在上传之前检查 png、gif、jpg、jpeg 的文件类型。我想要一个代码在将其上传到目录之前检查类型。 getimagesize(path to file) 警告我 无法打开流 因为 efile 不在目录中,它还没有上传。我没有找到任何适合我的东西。这里的任何人都可以帮我解决这个问题。这是我的代码:

list(image_width, image_height, image_type) = getimagesize("image1.jpg");
switch ($source_image_type)
{
    case IMAGETYPE_GIF:
        //some code here
    break;
    case IMAGETYPE_JPEG:
        //some code here
    break;
    case IMAGETYPE_PNG:
        //some code here
    break;
}

此代码向我发出无法打开流的警告。

【问题讨论】:

  • 上传之前?因此,您想在上传之前检查图像的扩展名是否正确,您需要使用过滤文件元素的 html5 元素。如果您的意思是在将上传的文件移动到非临时文件夹之前,那么您可以使用exif_imagetype
  • 它给了我“无法打开流”的警告。由于文件未上传到目录中。我想要一个代码在上传之前检查类型。
  • 如果是在上传之前,那么您只有文件名可以使用。最好的办法是分解并检查最后一个扩展——这正是 웃웃웃웃웃 所做的。
  • 我认为当您仅在客户端检查 mime 类型时(上传之前),您不能信任上传。无论如何..你可以像jsfiddle.net/634e0mc1/1这样用JavaScript检查它。 accept 属性也很有帮助 <input type="file" name="pic" accept="image/*">

标签: php image


【解决方案1】:

使用以下函数:

string image_type_to_mime_type ( int $imagetype );

请参考this链接。

【讨论】:

  • 它警告我“无法打开流”我想要在上传图像之前检查图像类型的东西。
  • 您可以在这里分享您的代码,以便我们根据您的代码进行正确处理吗?
  • 我编辑了我的帖子并附上了我的代码示例,请检查。
【解决方案2】:

在php手册中有一个内置函数来获取图像类型,你可以使用exif_imagetype()做任何你想做的事情,

int exif_imagetype ( string $filename )

if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
    echo 'The picture is not a gif';
}

Windows 用户:如果您收到致命错误“致命错误:调用未定义的函数 exif_imagetype()”,并且您已启用 php_exif.dll,请确保启用 php_mbstring.dll。您必须在 php.ini 中将 mbstring 放在 exif 之前,即:

extension=php_mbstring.dll
extension=php_exif.dll

您可以通过调用 phpinfo() 并搜索 exif 来检查这是否有效。 如果函数 exif_imagetype() 不可用, 您可以尝试以下解决方法:

if ( ! function_exists( 'exif_imagetype' ) ) {
    function exif_imagetype ( $filename ) {
        if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) {
            return $type;
        }
    return false;
    }
}

如果你想在上传图片之前检查,你可以使用

if($_FILES['file_upload']['type'] != 'image/png'){
    die('Unsupported filetype uploaded.');
}

【讨论】:

  • 它给了我“无法打开流”的警告。由于文件未上传到目录中。我想要在上传之前检查图像类型的东西。
  • 编辑了我的答案,看看底部,我想,可以通过上传图片的常规函数​​来完成
猜你喜欢
  • 2014-02-17
  • 2012-09-27
  • 2011-03-19
  • 1970-01-01
  • 2014-08-06
  • 2013-03-02
  • 2023-04-01
  • 1970-01-01
  • 2012-04-06
相关资源
最近更新 更多