」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > How to Determine File Type Without Relying on Extensions?

How to Determine File Type Without Relying on Extensions?

發佈於2024-11-08
瀏覽:343

How to Determine File Type Without Relying on Extensions?

How to Detect File Types Without Relying on Extensions

Determining whether a file is an mp3 or image format beyond examining its extension is a valuable task in programming. Here's a comprehensive solution that doesn't rely on extensions:

PHP >= 5.3:

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

PHP < 5.3:

$mimetype = mime_content_type($filename);

Alternatives:

  • exif_imagetype: Specifically checks for image mimetypes.
  • getimagesize: Similar to exif_imagetype, but may have library dependency issues.

Proxy Method:

For a more generalized approach, consider wrapping these functions into a proxy method:

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;
}

By using this proxy method, you can easily determine the mimetype of a file based on the availability of different functions on your system.

最新教學 更多>
  • 如何使用現代前端開發技術建立令人驚嘆的網站
    如何使用現代前端開發技術建立令人驚嘆的網站
    在当今的数字时代,网页设计在给访问者留下持久印象方面发挥着至关重要的作用。随着数以百万计的网站争夺注意力,创建一个令人惊叹的、脱颖而出的网站比以往任何时候都更加重要。现代前端开发技术彻底改变了网站的构建方式,使设计美观、实用且响应灵敏的网站变得更加容易,从而提供最佳的用户体验。本文将深入探讨可帮助您...
    程式設計 發佈於2024-11-08
  • 讓我們建立一個簡單的 React hook 來偵測瀏覽器及其功能
    讓我們建立一個簡單的 React hook 來偵測瀏覽器及其功能
    使用者代理嗅探是最受歡迎的瀏覽器偵測方法。不幸的是,由於多種原因,前端開發不太容易使用它。瀏覽器供應商不斷嘗試讓嗅探變得不可能。因此,每個瀏覽器都有自己的使用者代理字串格式,解析起來非常複雜。 有一個更簡單的方法可以使用瀏覽器 CSS API 實現相同的目的,我將向您展示。那麼讓我們建立瀏覽器功能...
    程式設計 發佈於2024-11-08
  • 使用 Golang 的電子商務平台:了解乾淨的架構
    使用 Golang 的電子商務平台:了解乾淨的架構
    了解乾淨的架構 清潔架構(Clean Architecture)由 Robert C. Martin 推廣,是一種軟體設計理念,它將設計元素劃分為環級別。乾淨架構的主要規則是程式碼依賴關係只能從外層向內移動。這意味著: 業務規則不依賴 UI 或資料庫。 業務規則對外界一無所知。 ...
    程式設計 發佈於2024-11-08
  • TypeScript 與 JavaScript:開發人員的主要區別
    TypeScript 與 JavaScript:開發人員的主要區別
    JavaScript 是網路的核心語言,而 TypeScript 是基於它的現代增強語言。兩者都很強大,但它們的用途略有不同。這是一個快速細分: 1. 模式安全 JavaScript:鬆散型別。變數可以動態更改類型,從而導致潛在的運行時錯誤。 TypeScript:靜態型別。您定義...
    程式設計 發佈於2024-11-08
  • 每個 PHP 專家都該回答的問題
    每個 PHP 專家都該回答的問題
    自 1990 年代中期以來,PHP 一直是 Web 開發的重要語言,廣泛應用於網站後端。儘管出現了新的語言和框架,PHP 仍然很重要,尤其是在 WordPress 等平台上。如果您能解決以下八個主題,那麼您對PHP 的理解就相當高級了。 1. 建構開發環境 部署 PHP 開發環境...
    程式設計 發佈於2024-11-08
  • JavaScript 能否為不可預測的屬性實現動態 Getter 和 Setter?
    JavaScript 能否為不可預測的屬性實現動態 Getter 和 Setter?
    JavaScript 可以實作動態 Getters/Setters 嗎? 動態 getters 和 setters 允許 JavaScript 物件處理超出預先定義屬性的屬性存取和修改。雖然早期的 JavaScript 技術對已知屬性使用特定的 getter 和 setter,但本文探討了為任何未定...
    程式設計 發佈於2024-11-08
  • 我的第一個使用 Python 建立的開源項目,透過 CLI 快速檢查資料庫
    我的第一個使用 Python 建立的開源項目,透過 CLI 快速檢查資料庫
    我的問題是: 在處理其他項目時,我發現自己總是必須連接並使用 SELECT * 來查看虛擬條目或新用戶。我更喜歡使用 CLI 來監視我的資料庫條目,特別是因為我正在測試並只是將虛擬使用者新增為專案中的第一個普通使用者。因此,總是需要連接到 postgres、mysql 並從 CLI 進行 selec...
    程式設計 發佈於2024-11-08
  • PHP,永不倒下的大象!
    PHP,永不倒下的大象!
    照片由 Ben Griffiths 在 Unsplash 上拍攝 PHP是一種廣受好評的語言,同時也受到其他人的批評,有人說它正在消亡,但真的是這樣嗎,值得花時間學習PHP嗎? PHP PHP 是 Rasmus Lerdorf 在 90 年代開發的程式語言,最初它被開發為一種伺服器...
    程式設計 發佈於2024-11-08
  • 如何從 Android 應用程式安全地存取遠端 MySQL 資料庫?
    如何從 Android 應用程式安全地存取遠端 MySQL 資料庫?
    使用JDBC 在Android 中存取遠端MySQL 資料庫:綜合分析使用JDBC API 從Android 應用程式遠端連線到MySQL 資料庫是一種常見的操作移動開發者之間的問題。雖然建立直接連接在技術上是可行的,但它帶來了重大的安全和效能問題。 安全影響允許 Android 應用程式直接連接到...
    程式設計 發佈於2024-11-08
  • 使用 CSS 建立自訂滑鼠遊標
    使用 CSS 建立自訂滑鼠遊標
    Written by Samson Omojola✏️ Editor’s note: This article was last updated by Njong Emy on 5 August 2024 to update content and code blocks, as well as t...
    程式設計 發佈於2024-11-08
  • 如何修復 Chrome 擴充功能中孤立內容腳本導致的「擴充功能上下文無效」錯誤?
    如何修復 Chrome 擴充功能中孤立內容腳本導致的「擴充功能上下文無效」錯誤?
    如何在Chrome 擴充程式更新後刪除孤立腳本問題無意中重新載入Chrome 擴充程序,尤其是處於開發者模式的擴充程序,可能會建立孤立內容腳本。這些腳本仍然在後台運行,但與擴展的其餘部分失去了通信,從而導致諸如“擴展上下文無效”和“未檢查的運行時.lastError”之類的錯誤。 解決方案孤立的內容...
    程式設計 發佈於2024-11-08
  • 為什麼需要設定$GOPATH以及如何有效使用它?
    為什麼需要設定$GOPATH以及如何有效使用它?
    在$GOPATH 的迷宮中導航作為一個初露頭角的Go 開發者,在錯綜複雜的$GOPATH 中導航可能會令人畏懼。為了闡明其目的和用法,讓我們深入研究有關此環境變數的一些常見問題。 為什麼在專案根目錄設定 $GOPATH? 傳統上, $GOPATH 對於設置安裝 Go 包的工作區至關重要。預設情況下,...
    程式設計 發佈於2024-11-08
  • 如何建立資料輸入系統(快速簡單指南)
    如何建立資料輸入系統(快速簡單指南)
    三步构建数据输入系统 在本指南中,我们详细介绍了使用 Five 的快速应用程序开发环境构建和部署数据输入系统所需的步骤。 什么是数据输入系统? 数据输入系统是一个旨在捕获、存储、管理和分析数据的平台。这些系统有助于收集用于决策、研究、分析和报告的重要信息。数据输入系统范围从基本的在线表格到与数据库和...
    程式設計 發佈於2024-11-08
  • 使用內嵌 SVG 時如何確保剪輯路徑的響應式對齊?
    使用內嵌 SVG 時如何確保剪輯路徑的響應式對齊?
    具有內嵌 SVG 的響應式剪輯路徑將剪輯路徑應用於具有背景的元素時,通常會嵌入 SVG 內嵌。但是,您可能會遇到回應能力或對齊問題,如下例所示:<header id="block-header"> <svg width="100%" he...
    程式設計 發佈於2024-11-08
  • 使用 PHP 安全地傳送電子郵件:使用 SMTP 發送無垃圾郵件的指南
    使用 PHP 安全地傳送電子郵件:使用 SMTP 發送無垃圾郵件的指南
    这是如何使用 PHP SMTP 发送电子邮件而不进入垃圾邮件文件夹的分步示例。 我们将使用 PHPMailer 库,它简化了通过 SMTP 发送电子邮件的过程,并有助于提高送达率。按照以下步骤,您将了解如何正确配置 SMTP 以避免电子邮件进入垃圾邮件文件夹。 第1步:安装PHPMa...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3