MIME类型检测是检测某种文件的最佳方法吗?

enk*_*ore 7 php mp3 mime-types

我正在使用PHP上传表格,只允许MP3文件.

上传完成后,我分析文件以检查它是否真的是MP3.第一步是将mime类型检测为audio/mpeg.我使用库finfo_file()并且工作正常,但在测试期间,一些MP3文件被拒绝,因为它们的MIME类型结果为application/octet-stream.

我的问题是:

  • 我的应用程序肯定会拒绝那些MP3文件吗?他们实际上播放音频.
  • 这个MIME类型是MP3的原因是什么原因?
  • 是检测MIME类型最明确的方式来了解文件的种类?

Bri*_*don 0

如果您想要一种极其可靠的方法来检测文件类型,而不只是信任客户端提供正确的 MIME 类型,请使用UNIX 上的文件实用程序。

$ file Black\ Sands\ 01\ Prelude.mp3
Black Sands 01 Prelude.mp3: Audio file with ID3 version 2.2.0, contains: MPEG ADTS, layer III, v1, 320 kbps, 44.1 kHz, Stereo

$ file homework/math475-hw8.docx
homework/math475-hw8.docx: Microsoft Word 2007+
Run Code Online (Sandbox Code Playgroud)

在 PHP 中,您可以使用exec函数来调用它。