
如果人們的電腦可以根據文件副檔名(.pdf、.mp3、.docx、.dotx 等)決定如何處理文件,為什麼 Web 伺服器和電子郵件應用程式還需要指定 MIME 類型?
如果您想以與預設方式不同的方式傳遞檔案(例如將 .py 或 .html 檔案顯示為純文字)或檔案副檔名未在用戶端電腦上註冊,我認為這很有用,但在大多數情況下在這種情況下,如果我正在創建一種新的文件格式(例如.foobaz)並希望人們能夠在網絡上和通過電子郵件共享這些文件,難道僅僅依靠客戶端識別文件擴展名就足夠了嗎?
答案1
Mime 類型明確指定了文件的預期用途。檔案副檔名僅暗示內容。兩者都可能是錯的。 DOC 已被許多具有各種內部文件格式的文字編輯器使用。
偽造擴展名被廣泛用於誤導人們作為文件類型。這可用於各種惡意軟體。它還可能導致安全錯誤。如果 myfile.txt 作為文字檔案進行安全性驗證,然後透過內容檢查作為可執行檔案執行,則您最終可能會得到受感染的電腦。
Unix 使用可執行位來指示哪個檔案可以運行。腳本可以以 bang 路徑開頭,指示哪個解釋器應該執行它們。 file 指令可用於相當可靠地決定有或沒有副檔名的檔案類型。
使用副檔名來識別使用哪個檔案可能會導致歧義。如果我有 myfile.exe、myfile.com、myfile.bat 和 myfile.cmd,如果我執行命令 myfile,它們就會運行。
答案2
你看問題的方式是錯的。
文件需要 mimetype,以便客戶端知道如何處理該文件。
你的問題也應該反過來:
如果我們可以透過 mime 類型來識別檔案類型,為什麼還需要檔案副檔名呢?
答案可能是讓人們更容易透過查看名稱來識別文件的類型。 Windows 上可能還有其他原因。
答案3
這種情況只發生在windows世界中,在unix世界中檔案不必有副檔名,它們由mime類型識別。
答案4
由於小型和自訂(客製化設計)應用程式往往對其檔案副檔名相當自由。這可能會導致檔案副檔名用於表示多種類型的檔案。
由於無法保證檔案副檔名與給定的檔案類型相對應,因此接收者可能無法識別檔案的類型,並且無法取得正確的程式來開啟它。
除了 MIME 類型之外,還有其他系統來識別文件,例如 Magic Numbers。這意味著不需要檔案副檔名。檔案副檔名也可以由無法開啟檔案的使用者重新命名,這意味著他們可能會聯繫支援人員。