”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在不依赖扩展名的情况下确定文件类型?

如何在不依赖扩展名的情况下确定文件类型?

发布于2024-11-08
浏览:206

How to Determine File Type Without Relying on Extensions?

如何在不依赖扩展名的情况下检测文件类型

除了检查文件的扩展名之外,确定文件是 mp3 还是图像格式是很有价值的编程中的任务。这是一个不依赖扩展的全面解决方案:

PHP >= 5.3:

$mimetype = finfo_fopen(fopen($filename, 'r'), FILEINFO_MIME_TYPE);

PHP

$mimetype = mime_content_type($filename);

替代方案:

  • exif_imagetype : 特别检查图像mimetypes.
  • getimagesize: 与 exif_imagetype 类似,但可能存在库依赖问题。

代理方法:

对于更通用的方法,请考虑将这些函数包装到代理方法中:

function getMimeType($filename)
{
    $mimetype = false;
    if (function_exists('finfo_fopen')) {
        // open with FileInfo
    } elseif (function_exists('getimagesize')) {
        // open with GD
    } elseif (function_exists('exif_imagetype')) {
        // open with EXIF
    } elseif (function_exists('mime_content_type')) {
        $mimetype = mime_content_type($filename);
    }
    return $mimetype;
}

通过使用此代理方法,您可以根据系统上不同功能的可用性轻松确定文件的 mimetype。

最新教程 更多>
  • 为什么我的 `` 元素不继承其父元素的字体样式?
    为什么我的 `` 元素不继承其父元素的字体样式?
    字体继承不兼容在CSS中,元素继承其父元素的字体属性,例如元素。但是, 元素并不总是遵循此规则。在提供的示例中, 和 元素共享 Verdana 字体,但 元素显示为“MS壳牌Dlg”。这是因为表单元素(包括 )具有默认字体设置,该设置会覆盖继承的字体属性。覆盖默认字体确保所有字体继承一致元素时,...
    编程 发布于2024-11-08
  • 集成与端到端(E 测试:了解它们的差异以及何时使用它们
    集成与端到端(E 测试:了解它们的差异以及何时使用它们
    在软件开发中,测试在确保应用程序到达最终用户之前的可靠性和性能方面发挥着至关重要的作用。由于可用的测试方法多种多样,因此了解哪种方法适合您的需求非常重要。两种广泛使用的测试方法是集成测试和端到端(E2E)测试。两者都旨在验证系统是否正常工作,但他们从不同的角度进行验证。在这篇文章中,我们将探讨集成...
    编程 发布于2024-11-08
  • 初级后端开发人员寻求无偿工作以获得经验
    初级后端开发人员寻求无偿工作以获得经验
    大家好, 我叫 Harith,是一名初级后端开发人员。我对使用 Python 和 Django 框架进行 Web 开发非常感兴趣。我希望通过为开源项目做出贡献来获得更多实践经验。 我提供什么: 愿意在没有任何报酬的情况下参与项目,因为我的主要目标是提高我的技能和拓宽我的知识。 了解 Django 和...
    编程 发布于2024-11-08
  • 如何在 Python 中检查列表是否共享任何项目?
    如何在 Python 中检查列表是否共享任何项目?
    在 Python 中测试列表是否共享任何项目简介在 Python 中处理多个列表时,通常需要确定是否有元素重叠在这些列表之间。这是各种数据分析和操作任务的基本操作。简答在 Python 中测试列表重叠的推荐方法是利用 not set(a).isdisjoint(b ) 表达。它为此任务提供了一种普遍...
    编程 发布于2024-11-08
  • Node.js 中与 WebSockets 和 Socket.IO 的实时通信
    Node.js 中与 WebSockets 和 Socket.IO 的实时通信
    现代 Web 应用程序通常需要实时通信,无论是聊天系统、实时更新、协作编辑还是通知。传统的 HTTP 通信不足以满足实时应用程序的需要,因为它依赖于请求-响应模式。这就是 WebSockets 发挥作用的地方,它允许服务器和客户端之间进行全双工通信。 在本文中,我们将探讨: WebSocket 是什...
    编程 发布于2024-11-08
  • 如何解决使用 JavaScript 更改 iframe src 的问题
    如何解决使用 JavaScript 更改 iframe src 的问题
    使用 JavaScript 更改 iframe src:疑难解答单击单选按钮时更改 iframe 的 src 属性时遇到问题。要纠正此问题,必须检查代码以确定确切的原因。一个可能的问题是括号的错误使用。在您的代码中,该行:document.getElementById['calendar'].src...
    编程 发布于2024-11-08
  • 为什么 `window.onscroll` 在 iPhone/iPad 上不起作用?
    为什么 `window.onscroll` 在 iPhone/iPad 上不起作用?
    在 iPhone/iPad 上使用滚动事件捕获事件尝试在 iPad 上捕获滚动事件时,故障排除工作揭示了常见的方法例如 window.onscroll 和 document.onscroll 无法触发所需的响应。理解 iOS 上的事件处理设备iPhoneOS 事件处理机制与传统桌面浏览器不同。在连续...
    编程 发布于2024-11-08
  • 从开发人员到审阅者:初级开发人员审阅数据库查询的清单
    从开发人员到审阅者:初级开发人员审阅数据库查询的清单
    作为开发人员,提供高质量的代码至关重要,这些代码不仅具有功能性,而且还针对性能进行了优化。在开发人员领域的三年里,我从一名实践开发人员转变为审阅者角色。我在审核过程中关注的关键领域之一是数据库查询优化。 为什么关注数据库查询? 数据库查询可以显着影响应用程序的性能。编写得好的查询可以有效地获取数据,...
    编程 发布于2024-11-08
  • Mockito 是最好的 Java 模拟框架吗?  对其优缺点的综合评价。
    Mockito 是最好的 Java 模拟框架吗? 对其优缺点的综合评价。
    最佳 Java 模拟框架:Mockito在 Java 中,制作模拟对象对于有效的单元测试至关重要。鉴于选择过多,为此目的确定最佳框架可能会令人畏惧。本文评估了最突出的选择之一 Mockito,重点介绍了它的优点和缺点。Mockito 因其用户友好的语法而脱颖而出,使其易于开发人员使用。其简化方法针对...
    编程 发布于2024-11-08
  • 如何可靠地获取当前运行的Python文件的路径?
    如何可靠地获取当前运行的Python文件的路径?
    如何获取当前执行的Python文件的路径问题:确定当前运行的Python文件的路径可能很麻烦,特别是当遇到在特定场景下证明不可靠的方法时。其中包括从另一个脚本或在 IDLE 或 Mac OS X v10.6 等特定环境中启动执行的实例。解决方案:通用获取当前执行的 Python 的文件路径文件,采用...
    编程 发布于2024-11-08
  • Stack Overflow 如何创建这些信息丰富的弹出消息?
    Stack Overflow 如何创建这些信息丰富的弹出消息?
    复制 Stack Overflow 的弹出消息功能您可能已经注意到 Stack Overflow 上出现的时尚且内容丰富的弹出消息。这些消息为用户提供了有价值的通知和指导,您可能想知道如何在自己的网站上实现类似的功能。Stack Overflow 利用 HTML、CSS 和 JavaScript 的...
    编程 发布于2024-11-08
  • 为什么 Python 中没有元组理解?
    为什么 Python 中没有元组理解?
    理解 Python 中元组推导式的缺失在 Python 编程语言中,列表推导式和字典推导式提供了生成结构化数据的有效方法。然而,缺乏元组理解是一个异常现象。本文深入探讨了这一遗漏背后的原因。元组不变性是原因的假设并不成立。元组确实是不可变的,但这个属性并不妨碍它们在推导式中构建。问题的关键在于 Py...
    编程 发布于2024-11-08
  • 如何使用 VLC 模块在 Python 中播放 MP3 歌曲?
    如何使用 VLC 模块在 Python 中播放 MP3 歌曲?
    使用 Python 播放 MP3 歌曲使用正确的工具,在 Python 中播放 MP3 歌曲可以非常简单。错误的做法:尝试使用wave模块打开MP3文件,如下图所示不推荐:import wave w = wave.open("e:/LOCAL/Betrayer/Metalik Klinik...
    编程 发布于2024-11-08
  • 如何为Apache PHP应用程序配置环境变量?
    如何为Apache PHP应用程序配置环境变量?
    Apache PHP 应用程序的环境变量配置开发依赖环境变量的 PHP 应用程序时,必须清楚地了解如何配置环境变量使用 Apache 时设置这些变量。本文旨在提供有关配置可在 PHP 中访问的环境变量的指导,确保 Web 应用程序的正确运行。具体来说,为同一服务器中的各个域配置单独的环境变量是一种常...
    编程 发布于2024-11-08
  • 如何从 Activity 访问 ViewPager 片段方法?
    如何从 Activity 访问 ViewPager 片段方法?
    从 Activity 访问 ViewPager Fragment 方法许多移动应用程序使用片段,即代表模块化屏幕部分的独立组件。使用视图分页器管理多个片段可实现流畅的导航和页面动画。有时,开发人员需要在片段中执行特定操作以响应外部事件,例如用户在视图寻呼机上滑动。然而,实现此功能可能会遇到某些挑战。...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3