使用finfo_file()函数检测上传图片的类型

该函数可以检测文件的MIME类型。因为有时候我们只根据文件后缀来判断是不准确的。

function getMIME($filename){
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    return finfo_file($finfo, $filename);
}

echo getMIME('test.jpg'); //image/jpeg

finfo_file 文档

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo_file -- finfo::file — Return information about a file,This function is used to get information about a file.

完整例子:

<html>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <head>
        <title>文件上传</title>
    </head>
    <body>
    <form accept="" method="post" enctype="multipart/form-data">
    <input  type="file" name="img[]" /><br />
    <input  type="submit" name="s" /><br />
    </form>

<?php

    //上传文件信息
    $img = $_FILES['img'];
    if ($img)
    {
        //文件存放目录,和本php文件同级
        $dir = dirname(__file__);

        $filename = $img['name'][0];
        $tempname = $img['tmp_name'][0];

        $savepath = "$dir\\$filename";
        $state = move_uploaded_file($tempname, $savepath);
        //如果上传成功,预览
        if($state)
        {
            echo "<img src='$filename' alt='$filename' /> ";
        }

        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        //$mime = finfo_file($finfo, dirname(__FILE__)."/".$filename);
        $mime = finfo_file($finfo, $savepath);
        echo $mime;

    }
?>
    </body>
</html>

如果是jpg文件,输出image/jpeg。

时间: 2024-10-24 18:46:24

使用finfo_file()函数检测上传图片的类型的相关文章

js检测上传图片大小类型代码

function checkPic(){  var file=document.getElementById("picfile");  if (checkExd(file.value)){   if(checkSize(file.value)){   return true;   }else {   return false;   }  }else{   return false;  } } function checkSize(fileName){ var img=new Image

js 检测上传图片类型大小代码

js 检测上传图片类型大小代码 var img=null; function showtype() { if(document.up.title.value=="")  {alert("请输入照片说明!");  document.up.title.focus();  return false;  } var fsize=0; if(img)img.removenode(true); img=document.createelement("img"

isArray()函数(JavaScript中对象类型判断的几种方法)_javascript技巧

1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 typeof 的能力有限,其对于Date.RegExp类型返回的都是"object".如: typeof {}; //

link中函数除了能定义在类型里面,是否可以定义在函数里面?

问题描述 link中函数除了能定义在类型里面,是否可以定义在函数里面? link中函数除了能定义在类型里面,是否可以定义在函数里面? 解决方案 可使用匿名函数: Func<int int> 内嵌函数 = x => x * x;int j = 内嵌函数(10); // 100 解决方案二: 不能.只有类可以嵌套,函数不可以嵌套. 解决方案三: 可使用匿名函数:Func 内嵌函数 = x => x * x;int j = 内嵌函数(10); // 100

c++-调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么。。

问题描述 调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么.. 如图的"APICALL" 我调用dll时忽略它可以吗.. 解决方案 APICALL 应该只是一个简单的.空的宏定义,调用时可以不用管 它的作用只是标识函数是系统定义的 API 解决方案二: 函数调用约定.描述参数入栈.清栈方式等. 解决方案三: 不可以啊,这是调用约定,导入导出之类东西,错了函数调用出错,或者编译出问题 解决方案四: 如果是你自己写这个DLL 头文件里面的#if 需要抄下来 编写的

PowerShell脚本实现检测网络内主机类型_PowerShell

最近一直在写一个自动检测网络内主机类型的脚本.基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备.对一个运维人员来说往往需要尽快熟悉一个陌生的网络.所以这个脚本就很方便了,如果有更好的建议欢迎指正感谢! 复制代码 代码如下: ############################################ #Author:Lixiaosong #Email:lixiaosong8706@gmail.com #For:检测/24掩

PHP函数如何增加强制类型返回实例

在开发过程中,函数的返回值类型应该是确定不变的,但PHP是弱类型的语言, 所以PHP是没有此类语法验证的,正因为如此,造成了很多坑坑. 比如下面的代码: <?php function getArticles(...){ $arrData = array(); if($exp1){ return $arrData; }else if($exp2){ return 1; }else{ return false; } } $arrData =getArticles(...); foreach($arr

PowerShell函数指定返回值类型实例_PowerShell

本文介绍在自定义PowerShell函数时,如何设置返回值的数据类型.PowerShell函数的返回值可以有类型,也可以没有类型,跟输入参数相似.     定义PowerShell函数的返回值类型,要使用OutputType这个指令.将这个指令放到param指令之前即可实现对返回值类型的定义. 复制代码 代码如下: function Test-IntelliSense {     [OutputType('System.DateTime')]     param()     return Get

JS正则表达式匹配检测各种数值类型(数字验证)

验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^\+?[1-9][0-9]*$ 验证非零的负整数:^\-[1-9][0-9]*$ 验证非负整数(正整数 + 0) ^\d