This article mainly introduces the method for PHP to accurately determine the file type without using the extension. It involves the finfo_file method in PHP and the related operating skills of binary stream for file types. Friends in need can refer to this article
The example describes how PHP can accurately determine the file type without using the extension. Share it with everyone for your reference, the details are as follows:
The first method
Through php's finfo_file()
$handle=finfo_open(FILEINFO_MIME_TYPE);//This function opens a magic database and returns its resource. $fileInfo=finfo_file($handle,'./test.txt');// Return information about a file finfo_close($handle); print_r($fileInfo); echo '==========="\n"';
Also
finfo_buffer: Return information about a string buffer
finfo_close: Close fileinfo resource
mime_content_type:Detect MIME Content-type for a file (deprecated)
Second method
Get file content through binary stream
$fp=fopen('test.txt','r')///实际是image/png $bin = fread($fp, 2); //只读2字节 fclose($fp); $str_info = @unpack(“C2chars”, $bin);//Unpack data from binary string $type_code = intval($str_info['chars1'].$str_info['chars2']);// Get the integer value of a variable $file_type = ”; switch ($type_code) { case 7790: $file_type = 'exe'; break; case 7784: $file_type = 'midi'; break; case 8075: $file_type = 'zip'; break; case 8297: $file_type = 'rar'; break; case 255216: $file_type = 'jpg'; break; case 7173: $file_type = 'gif'; break; case 6677: $file_type = 'bmp'; break; case 13780: $file_type = 'png'; break; default: $file_type = 'unknown'; break; }
The above is the entire content of this article, I hope it will be helpful to everyone's study.
Related recommendations:
PHP Analysis of tips for using file locks, mutex locks, and read-write locks in programs _php skills
##PHPSummary of several ways to try program concurrency in programming_php skills
##PHP Use the AdminLTE template to write the website backend interface in the Laravel framework_php tips
The above is the detailed content of How to accurately determine the file type in php without using the extension. For more information, please follow other related articles on the PHP Chinese website!