zoukankan      html  css  js  c++  java
  • finfo_file

     

    本文实例讲述了PHP使用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.

    函数很简单,看看官方文档就大概清楚了,这里就举一个使用例子吧,就是上传一张图片,并判断它的类型:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <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>

    需要注意的是,finfo_file 函数需要 PHP 版本 >= 5.3.0,如果低于 5.3,那么需要到 php.ini 里,将 extension=php_fileinfo.dll 前面的分号去掉来启用

  • 相关阅读:
    Hive安装教程
    HBase安装教程
    Hadoop集群搭建
    Redis集群安装详细步骤
    Python绘图工具turtle库的使用
    python程序语法元素分析
    Selenium请求库爬取京东商品实例
    python爬虫入门
    python入门
    pytest fixture场景一:参数传入
  • 原文地址:https://www.cnblogs.com/hehexu/p/8619902.html
Copyright © 2011-2022 走看看