本文实例讲述了php实现不通过扩展名准确判断文件类型的方法。分享给大家供大家参考,具体如下:
第一种方法
通过php的finfo_file()
1
2
3
4
5
|
$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"' ; |
另外
finfo_buffer: Return information about a string buffer
finfo_close: Close fileinfo resource
mime_content_type:Detect MIME Content-type for a file (deprecated)
第二种方法
通过二进制流获取文件内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$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 ; } |
希望本文所述对大家PHP程序设计有所帮助。