在php中發現文件文件類型的最佳方式是什麼?我聽說瀏覽器可能會被欺騙,那麼這樣做的更好方法是什麼?在php中識別文件類型的最佳方式
6
A
回答
10
您可以使用finfo_file
<?php
echo finfo_file(finfo_open(FILEINFO_MIME), "foo.png");
?>
3
我想你的意思finfo_file()從php.net例發現MIME類型
:
<?php
$finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>
5
看 「幻數」。文件的前幾個字節通常標識它是什麼類型的文件。例如,GIF的幾個字節爲47 49 46 38 37 61或47 49 46 38 39 61,GIF89a或GIF87a爲ASCII。還有很多其他的「神奇數字」。見http://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files
編輯:我相信這比PHP上的MIME函數更可靠。
2
您不能信任瀏覽器返回的Content-Type。它基於文件擴展名,可以很容易地被欺騙。
由於stalepretzel提到它,猜測文件內容類型的最好方法是使用幻數。如果你的服務器是Unix和Linux機器上運行,你可以使用這個功能:
<?php
function get_file_type($file) {
if(function_exists('shell_exec') === TRUE) {
$dump = shell_exec(sprintf('file -bi %s', $file));
$info = explode(';', $dump);
return $info[0];
}
return FALSE;
}
?>
Usage: $file_type = get_file_type('my_file_name.ext');
PD:檢查/usr/share/magic.mime到更多的信息。
+0
請注意,使用shell_exec是一個潛在的安全問題 – josh123a123 2016-08-08 20:52:00
相關問題
- 1. 在Java中識別特定文件類型的最佳方法是什麼?
- 2. 獲取文件MIME類型的最佳方式在php
- 3. 識別測試類的最佳方法?
- 4. 識別CURL調用的最佳方式
- 5. 識別Android設備的最佳方式
- 6. 識別googlebot的最佳方式
- 7. 獲取文件MIME類型的最佳方式PHP
- 8. 在Windows中識別unicode編碼文本文件的最佳方式是什麼?
- 9. 識別WPF控件的最佳方法?
- 10. 識別輸入文本類型的最佳做法
- 11. 在Swift中識別iPhone UID的最佳方式是什麼?
- 12. 在Microsoft SQL查詢中識別組的最佳方式
- 13. ExpressJS識別文件類型
- 14. C#,最快(最佳?)在目錄陣列中識別重複文件的方法
- 15. 最佳的方式在PHP
- 16. 唯一標識類型的最佳方式
- 17. 識別Windows中的文件類型
- 18. 在java中確定文件的MIME類型的最佳方法?
- 19. 的最佳方式基於類型
- 20. 以編程方式識別PDF類型
- 21. 在codeigniter中處理大型js文件的最佳方式
- 22. 在PHP中包含文件的最佳方式是什麼?
- 23. 在php中緩存文件的最佳方式是什麼?
- 24. 什麼是在PHP中創建XLS文件的最佳方式
- 25. 最佳方式文件
- 26. 在類中保存文件的最佳方式
- 27. PHP文件上傳 - 文件類型的最佳安全選項?
- 28. 在SQL中存儲標籤,類別和int []的最佳方式
- 29. 構建識別車牌模型的最佳方法(ALPR)
- 30. 的最佳方式 - PHP 5.5
請注意,此方法有它自己的問題(即返回空或不明確的字符串)。 – Sampson 2009-01-19 15:01:35