getimagesize() 与 finfo_file() 用于检测图像类型?

2023-12-25

有时图像没有扩展名,但仍然有效。我有一个文件上传表单,需要检测文件类型以将其与我的白名单进行比较。

我知道我不能信任从浏览器发送的 mime 类型,因此从我所做的研究来看,这两个选项似乎是可用的(它们仅在上传文件后才起作用):

$info      = getimagesize($path);
$imageType = $info['mime'];

And

$finfo     = finfo_open(FILEINFO_MIME_TYPE);
$imageType = finfo_file($finfo, $path);

从我所做的测试来看,它们看起来都工作得很好,但我想知道是否有任何理由使用其中一种方法而不是另一种?


快速浏览一下 php 源代码就会发现getimagesize()支持以下图像类型:

gif, jpeg, png, swf, psd, bmp, tiff, iff, jpc, jp2, jpx, jb2, xbm, ico

finfo_file支持更多哑剧类型,如 duskwuff 所说。不利的一面是,它还进行了更多的检查,这使得效率稍低。

我的一个小测试:

$startTime = microtime(true);
for ($i=0; $i<50000; $i++)
    getimagesize("test.png");

echo microtime(true) - $startTime;

$startTime = microtime(true);
for ($i=0; $i<50000; $i++) {
    $finfo     = finfo_open(FILEINFO_MIME_TYPE);
    $imageType = finfo_file($finfo, "test.png");
}

echo '<br>'.(microtime(true) - $startTime);

Result:

0.85886001586914
3.9046602249146
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getimagesize() 与 finfo_file() 用于检测图像类型? 的相关文章

  • 我是否需要破解 ZendFramework1.10.8/Doctrine1.2.2 才能生成模型?

    我已经开始阅读 zend 框架 它与 Doctrine 一起使用 并实现了一个小项目来掌握理解 我已经到了需要生成模型的地步 就像拥有一个生成脚本一样 如 Doctrine 1 2 中建议的那样 2 pdf 手册 经过几次不成功的尝试 例如
  • 在 php 中检测 iPad?

    如何向 iPad 查看者提供不同的页面 if SERVER HTTP USER AGENT Mozilla 5 0 iPad U CPU iPhone OS 3 2 like Mac OS X en us AppleWebKit 531 2
  • Composer 自动加载始终是第一位的

    我在一个遗留项目中使用作曲家 该项目有很多没有命名空间的类 重构不是一个选项 这是一个非常庞大的应用程序 但所有新模块都完全符合 psr 4 遗留代码有它自己的自动加载方法 使用类映射 非常有效 我的问题是 无论我以什么顺序添加自动加载器方
  • CodeIgniter 中的 base_url() 和 403 错误

    在 HTML 视图中 css 链接代码如下所示 但我的浏览器显示的地址具有双域地址 www jedendzien pl www jedendzien pl assets css style css 所以我收到 403 错误 我通过以下方式创
  • 在 eclipse pdt 中同步时 - 比较 php 文件的版本时出现空白灰色窗口

    我已经安装了适用于 64 位 Linux 的 Eclipse PDT Helios SR1 GTK Ubuntu Maverick 全新安装 我添加了用于使用 Subversion 的 Subversive 插件 并安装了 SVNKit 1
  • 联系表 7 根据用户选择立即发送给多个联系人

    您好 我正在 WordPress 联系表单 7 中创建联系表单 如果用户选择 全部 我想立即向多个收件人发送电子邮件 我看过这个 但似乎没有记录您是否可以一次发送给多个收件人http contactform7 com selectable
  • 字符编码失败,为什么\xBD在PHP + HTML中显示不正确

    我只是想更好地理解字符编码 所以我做了一些测试 我有一个保存为 UTF 8 的 PHP 文件 如下所示 页面本身
  • ZF2:如何将参数传递给转发插件,然后我可以在转发它们的方法中获取这些参数?

    我有一个 Action 方法Foo需要参数的控制器 public function fooAction one two a one b two 我需要从某些方法的其他方法转发到该方法Boo控制器 这些参数之一必须是引用参数 唯一的例子就是手
  • 关联数组与 SplObjectStorage

    我正在编写代码来管理一组独特的对象 该代码的第一个原型使用关联数组 基本上就像我一直这样做的方式一样 然而 我也热衷于利用 PHP 的更现代版本中添加的功能 例如 SplObjectStorage 1 这样做 部分是作为一种学习经验 部分是
  • Nginx 与 phpmyadmin 登录后重定向错误

    我正在使用 nginx 设置 phpMyAdmin 我可以访问 phpMyAdminhttp localhost phpmyadmin http localhost phpmyadmin 但是 当我登录时 URL 被重定向到http loc
  • Magento:查找包含产品的订单

    Magento 有没有办法找到包含给定产品的所有订单 如果可以通过管理面板来完成就更好了 报告 gt 产品 gt 订购的产品向我提供了产品销售的日期以及包含该产品的订单数量 但我需要知道哪些特定订单包含该产品 谢谢你 这个问题我在另一个问题
  • 两个 mysql_fetch_array 语句

    是否有任何原因导致我无法在一个 while 循环中包含两个处理两个不同 mysql 查询结果的 mysql fetch array 语句 原因是我有两个来自 mysql 数据库的查询结果 每个结果包含两列 如下所示 Query 1 Date
  • PHP 字符串转日期时间(AM/PM)

    可以将格式为 A H i m d y 的字符串转换为 php 中的日期时间吗 示例字符串 AM 05 28 07 08 13 这不起作用 date DateTime createFromFormat A H i m d y AM 05 28
  • 如何在服务器(无 GUI)上呈现网页以进行打印?

    我正在尝试使用 PHP 脚本将页面实用地打印到办公室打印机 这是我到目前为止所得到的 我在服务器上安装了一台打印机 我可以通过命令行的打印命令使用 PHP 向其发送作业 我还可以使用 PHP 脚本编写纯文本文件 然后将它们添加到打印提示中
  • 来自外部文件的 PHP 变量?

    编辑 完成的解决方案 工作代码 所以 这是我的一个朋友帮我想出来的 这是我在 K2 items php 文件中使用的部分 div class fb comments div
  • 删除删除线的 unicode 文本?

    我偶尔会收到用户的输入 他们正在使用那些烦人的 stikethrough 文本生成器 这破坏了我的代码 我尝试过在这里找到的一些代码 string preg replace x00 x1F x80 xFF string 它有效 但我需要它只
  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • PHP cURL 代理带标头?

    我正在制作一个 PHP 图像代理脚本 我需要它不仅能够回显其请求的图像的内容 而且还能够以相同的方式重现图像请求的标头 我见过一个 另一个 但没有同时看到过 这些 cURL 选项让我感到困惑 我该怎么做 抱歉 我不确定你想要什么 这是从图像
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect
  • 散列 hash_hmac 时,Convert.ToChar(0) 散列结果与 PHP 中的 chr(0) 不同的字符串

    我在 PHP 中有一个字符串 它被转换为字节数组并进行哈希处理 转换为字节数组的字符串如下所示 G 字符 0 便便 我需要 C 中的等效字节数组 这样我才能得到相同的哈希值 编辑 这是完整的问题 生成的哈希值不同 PHP api secre

随机推荐

  • 使用knitr(从.Rhtml到html):如何在R图中嵌入链接?

    我正在使用 knit 将 Rhtml 文件转换为 html 文件 我正在调用名为 Q1 的块的输出 块来了 它基本上是 2x2 布局的 ggplot2 图形 library ggplot2 myplot list for i in 1 4
  • 如何在 Win32 中将文本插入丰富的编辑控件,同时保留任何以前的格式

    我正在 win32 中开发聊天应用程序 目前 我正在为丰富的编辑控件文本动态分配内存 附加新行并使用 SetWindowText 设置新文本 当带有特定关键字的消息到达时 应用程序会为该行着色并将其附加到聊天窗口 一切安好 收到下一条消息时
  • IF @@Rowcount = 0 -- Access 中的 SQL 语法错误

    我在 Excel 中有一个子例程 我想将数据写入 Access 表 我正在尝试更新表中的行 如果已存在 如果不存在则添加它 即将离开建议 http blogs msdn com b miah archive 2008 02 17 sql i
  • 我们如何在 iOS 应用程序中添加视频而不是启动图像?

    我想在我的应用程序启动时添加一个短视频 而不是 iOS 中的启动图像 我尝试过将其添加到viewDidAppear 我最初的方法UIViewController 但在显示视频之前仍然显示空白屏幕 您无法添加启动视频而不是启动图像 但是 您的
  • 全局“npm ERR!peer dep丢失”可以修复吗?

    寻找明确的直接答案 我已经安装了全局的 包A 假设 aws amplify 例如 aws amplify 包A 有 包B 想要 包C 例如aws amplify 具有需要询问者的询问者自动完成提示 npm ERR peer dep miss
  • 更改用户参数以包含他们的用户名

    要查看我的应用程序上的用户页面 您必须输入他们的 ID user 2 我怎样才能让它使用它们username在参数中而不是用户显示页面的 id 值中 我希望它是 user username or username 任何帮助 将不胜感激 谢谢
  • 数据库架构更改后更新 LINQ to SQL 类的最佳方法

    我在一个项目中使用 LINQ to SQL 类 该项目的数据库设计仍然有些变化 是否有一种简单的方法可以将类与架构同步 或者如果表设计发生更改 我是否需要手动更新类 您可以使用 SQLMetal exe 生成 dbml 和 或 cs vb
  • 如何使用 Tridion Resolver 从发布中删除项目?

    我正在尝试为组件实现自定义解析器 如 Chris 所描述的 http www tridiondeveloper com the story of sdl tridion 2011 custom resolver and the alloww
  • 将 HTML 转换为 contentEditable 中的纯文本

    我有一个contentEditable我删除粘贴内容的格式on paste 通过捕捉事件 然后我聚焦一个文本区域 将内容粘贴到其中 然后复制该值 答案几乎来自here https stackoverflow com a 10551358 1
  • 直接在 Azure Datalake 中将 Python Dataframe 写入 CSV 文件

    我已将 Excel 文件导入到 pandas 数据框中 并完成了数据探索和清理过程 我现在想要将清理后的数据帧写入 csv 文件回 Azure DataLake 而不先将其保存为本地文件 我正在使用熊猫3 我的代码如下所示 token li
  • 任意精度小数算术中的浮点数与有理数 (C/C++)

    由于实现 AP 分数的方法有两种 一种是模拟 AP 的存储和行为double数据类型 仅具有更多字节 另一种是使用现有的整数 APA 实现将小数表示为有理数 即表示为一对整数 分子和分母 这两种方式中哪一种更有可能提供高效的算术在性能方面
  • 如何用 C 语言编写布尔表达式计算器?

    假设我在文本文件中有一个这样的字符串 var1 AND var2 AND var3 OR var4 AND var5 OR var6 AND var7 将其解析为 C 程序并正确处理和设置变量后 它将最终看起来像这样 1 AND 0 AND
  • MVC、DbContext 和多线程

    关于这些主题有很多问题 每个人都有自己的看法 也许有人可以就以下问题给我一个很好的答案 我有一个 Asp NET MVC Web 服务 它使用 EntityFramework 来访问数据库 有一个控制器 每次用户向 Web 服务发出请求时都
  • Ignite C++ 客户端用于 cassandra 集成

    我正在开发一个数据通信应用程序 我想通过 ignite c 与 cassandra 进行通信 当我尝试将数据放入 cassandra 时 它工作正常 但我无法从中获取数据 这是我的代码 test h namespace ignite nam
  • 如何延迟未命名对象的销毁?

    我正在使用TempDir struct https doc rust lang org tempdir tempdir struct TempDir html search 在磁盘上创建和删除文件夹 这TempDir除了其构造之外 代码中并
  • 如何增加 android Log 类的控制台输出

    对于 Android 平台上的默认 Log 控制台输出的字符数量有限 大约等于 3000 多一点 因此 如果消息长度超过 3000 个字符 则不会在屏幕上显示 我还没有找到比这更好的解决方案 public class Log private
  • WPF 和 WCF 数据服务在查询级别进行身份验证?

    所以 我发誓我对如何保护 WCF 数据服务完全感到困惑 在这方面 是否有一种简化的检查方法 以确保将数据发送到 WCF 服务的客户端经过身份验证 确保客户端本身是我编写的客户端 而不是某个模拟客户端 有什么网址可以帮助我解决这个问题吗 我使
  • 为什么在 Python 类定义的生成器中会出现此 NameError?

    在 Python 3 5 0 中 这段代码 a 1 2 class Foo object b 3 4 c tuple i j for j in b for i in a d tuple i j for i in a for j in b 产
  • 用于测试系统稳定性的函数,接收预测的时间序列作为输入

    我想编写一个函数 获取时间序列和标准差作为参数 并返回看起来像预测的调整后的时间序列 通过这个函数 我想测试一个系统的稳定性 该系统获取天气的预测时间序列列表作为输入参数 我对此类函数的方法如下所述 vector
  • getimagesize() 与 finfo_file() 用于检测图像类型?

    有时图像没有扩展名 但仍然有效 我有一个文件上传表单 需要检测文件类型以将其与我的白名单进行比较 我知道我不能信任从浏览器发送的 mime 类型 因此从我所做的研究来看 这两个选项似乎是可用的 它们仅在上传文件后才起作用 info geti