簡體   English   中英

將MIME類型知識添加到PHP

[英]Add MIME type knowledge to PHP

我知道用於檢測file的mime類型的UNIX命令file ,我可以通過PHP執行(如此處所示 ):

$content_type = exec("file -bi " . escapeshellarg($filepath));

我也知道

$fi = new finfo();
echo $fi->file($filename, FILEINFO_MIME_TYPE) . PHP_EOL;

echo mime_content_type($filename) . PHP_EOL;

兩種PHP內置解決方案都可以產生相同的輸出。 但是,Linux file命令更多地了解某些格式。

使用所有三種方法將AMR音頻文件報告為application/octet-stream 然后我將文件魔法添加到file命令的數據庫中:

$ cat /etc/magic
0   string  #!AMR\n Adaptive Multi-Rate Audio Codec
!:mime  audio/amr

$ file -bi test115.amr 
audio/amr; charset=binary

但是,PHP仍會報告application/octet-stream

我認為PHP內置file以某種方式使用相同的數據庫。 如何訓練PHP以了解AMR文件的MIME類型?

PHP似乎使用自己的捆綁數據庫進行文件信息查找; 您可以通過將第二個參數添加到new finfo調用或通過設置MAGIC env var來覆蓋此行為。

來自文檔:

注意:通常,使用捆綁的魔術數據庫(通過保留magic_file和MAGIC環境變量未設置)是最佳操作,除非您特別需要自定義魔術數據庫。

http://php.net/manual/en/function.finfo-open.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM