thinkphp5.1 如何判断上传的图片是个图片文件

Posted 代码当酒喝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp5.1 如何判断上传的图片是个图片文件相关的知识,希望对你有一定的参考价值。

方法一:通过获取文件mime类型判断

php使用fileinfo需要安装fileinfo扩展

$fi = new finfo(FILEINFO_MIME_TYPE);
//$mime_type = $fi->file('1.jpg');
$mime_type = $fi->file($file->getInfo()['tmp_name']);

这样就可以得到上传文件的 mime的type类型,然后可以判断是不是指定的图片

$allow= ['image/jpeg','image/png'];
if(in_array($mime_type,$allow)){
 //是图片
}else{
//别的文件
}

拓展知识:

thinkphp的文件上传中的这个参数其实就是通过上面的函数获取的类型
在这里插入图片描述

rar文件上传的mine的类型不是application/x-rar-compressed(mine类型大全参考)
而是

application/x-rar

有很多时候自己不知道类型的时候需要自己上传一个指定类型的然后通过上面的函数获取后,才能知道正确的值

参考地址:http://www.djcxy.com/p/46783.html

方案二:getimagesize

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。

如果不能访问 filename 指定的图像或者其不是有效的图像,getimagesize() 将返回 false 并产生一条 E_WARNING 级的错误。

该函数不需要GD

            if (!getimagesize($file->getInfo()['tmp_name'])) {
                dd("不是图片类型");
            }else{
                dd("是个图片");
            }

这个方法,是不需要自己指定指定的图片的,可以判断任何图片类型。如果不是特殊的需求,用它就很方便的区分图片和图片以外的任意文件

拓展知识点

php中图片的上传,表单验证上传的图片类型,通常是以下图片文件

jpeg, png, bmp, gif, svg,  webp

以上是关于thinkphp5.1 如何判断上传的图片是个图片文件的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5.1+layui图片上传(前端部分.第一种)

thinkphp5.1+layui图片上传(前端部分.第二种)

在.NET中用JS如何判断上传图片是不是合格?

使用thinkphp做一个上传图片,并且要将图片直接保存到数据库里。感觉现在好没有头绪,不知道如何下手。

如何在上传图片时在客户端用js判断图片大小并弹出提示

JS判断图片上传时文件大小和图片尺寸