Rumah >pembangunan bahagian belakang >tutorial php >PHP使用finfo_file()函数实现检测上传图片类型的方法

PHP使用finfo_file()函数实现检测上传图片类型的方法

墨辰丷
墨辰丷asal
2018-05-23 17:17:152215semak imbas

这篇文章主要介绍了PHP使用finfo_file()函数检测上传图片类型的实现方法,结合实例形式分析了finfo_file()函数的功能、使用方法及相关注意事项,需要的朋友可以参考下

在输入输出中,文件的交互必不可少,比如文件的上传什么的。这里我们来解决一个小问题,就是如何判断用户上传文件的文件类型。

举一个应用场面:在我们的Web应用中,比如用户上传头像,要求是png,jpg,gif格式,接收到图片后会根据图片格式类型做不同的头像切割处理,但个别用户会传一些只更改过文件后缀的非标准图片,比如nowamagic.jpg 强行修改成 nowamagic.png,这样程序无法对该类型图片进行切割,切割失败。这个时候就需要对文件进行检测,并且仅仅根据后缀来判断是不行的。

这种这么常见的需求,PHP肯定自带了某些函数来实现的,这个函数就是 finfo_file

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[&#39;img&#39;];
  if ($img)
  {
    //文件存放目录,和本php文件同级
    $dir = dirname(__file__);
    $filename = $img[&#39;name&#39;][0];
    $tempname = $img[&#39;tmp_name&#39;][0];
    $savepath = "$dir\\$filename";
    $state = move_uploaded_file($tempname, $savepath);
    //如果上传成功,预览
    if($state)
    {
      echo "<img src=&#39;$filename&#39; alt=&#39;$filename&#39; /> ";
    }
    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    //$mime = finfo_file($finfo, dirname(__FILE__)."/".$filename); 
    $mime = finfo_file($finfo, $savepath); 
    echo $mime;
  }
?>
  </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

PHP常见数组函数用法小结_php技巧

PHP函数checkdnsrr用法详解(Windows平台用法)_php技巧

PHP编程中尝试程序并发的几种方式总结_php技巧

Atas ialah kandungan terperinci PHP使用finfo_file()函数实现检测上传图片类型的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn