本文实例讲述了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程序设计有所帮助。