欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php准确获取文件MIME类型的方法_PHP教程

程序员文章站 2022-06-09 21:55:13
...

php准确获取文件MIME类型的方法

本文实例讲述了php准确获取文件MIME类型的方法。分享给大家供大家参考。具体实现方法如下:

?

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

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122



$mime = array (

//applications

'ai' => 'application/postscript',

'eps' => 'application/postscript',

'exe' => 'application/octet-stream',

'doc' => 'application/vnd.ms-word',

'xls' => 'application/vnd.ms-excel',

'ppt' => 'application/vnd.ms-powerpoint',

'pps' => 'application/vnd.ms-powerpoint',

'pdf' => 'application/pdf',

'xml' => 'application/xml',

'odt' => 'application/vnd.oasis.opendocument.text',

'swf' => 'application/x-shockwave-flash',

// archives

'gz' => 'application/x-gzip',

'tgz' => 'application/x-gzip',

'bz' => 'application/x-bzip2',

'bz2' => 'application/x-bzip2',

'tbz' => 'application/x-bzip2',

'zip' => 'application/zip',

'rar' => 'application/x-rar',

'tar' => 'application/x-tar',

'7z' => 'application/x-7z-compressed',

// texts

'txt' => 'text/plain',

'php' => 'text/x-php',

'html' => 'text/html',

'htm' => 'text/html',

'js' => 'text/javascript',

'css' => 'text/css',

'rtf' => 'text/rtf',

'rtfd' => 'text/rtfd',

'py' => 'text/x-python',

'java' => 'text/x-java-source',

'rb' => 'text/x-ruby',

'sh' => 'text/x-shellscript',

'pl' => 'text/x-perl',

'sql' => 'text/x-sql',

// images

'bmp' => 'image/x-ms-bmp',

'jpg' => 'image/jpeg',

'jpeg' => 'image/jpeg',

'gif' => 'image/gif',

'png' => 'image/png',

'tif' => 'image/tiff',

'tiff' => 'image/tiff',

'tga' => 'image/x-targa',

'psd' => 'image/vnd.adobe.photoshop',

//audio

'mp3' => 'audio/mpeg',

'mid' => 'audio/midi',

'ogg' => 'audio/ogg',

'mp4a' => 'audio/mp4',

'wav' => 'audio/wav',

'wma' => 'audio/x-ms-wma',

// video

'avi' => 'video/x-msvideo',

'dv' => 'video/x-dv',

'mp4' => 'video/mp4',

'mpeg' => 'video/mpeg',

'mpg' => 'video/mpeg',

'mov' => 'video/quicktime',

'wm' => 'video/x-ms-wmv',

'flv' => 'video/x-flv',

'mkv' => 'video/x-matroska'

);

function _getMimeDetect() {

if (class_exists('finfo')) {

return 'finfo';

} else if (function_exists('mime_content_type')) {

return 'mime_content_type';

} else if ( function_exists('exec')) {

$result = exec('file -ib '.escapeshellarg(__FILE__));

if ( 0 === strpos($result, 'text/x-php') OR 0 === strpos($result, 'text/x-c++')) {

return 'linux';

}

$result = exec('file -Ib '.escapeshellarg(__FILE__));

if ( 0 === strpos($result, 'text/x-php') OR 0 === strpos($result, 'text/x-c++')) {

return 'bsd';

}

}

return 'internal';

}

function _getMimeType($path) {

global $mime;

$fmime = _getMimeDetect();

switch($fmime) {

case 'finfo':

$finfo = finfo_open(FILEINFO_MIME);

if ($finfo)

$type = @finfo_file($finfo, $path);

break;

case 'mime_content_type':

$type = mime_content_type($path);

break;

case 'linux':

$type = exec('file -ib '.escapeshellarg($path));

break;

case 'bsd':

$type = exec('file -Ib '.escapeshellarg($path));

break;

default:

$pinfo = pathinfo($path);

$ext = isset($pinfo['extension']) ? strtolower($pinfo['extension']) : '';

$type = isset($mime[$ext]) ? $mime[$ext] : 'unkown';

break;

}

$type = explode(';', $type);

//需要加上这段,因为如果使用mime_content_type函数来获取一个不存在的$path时会返回'application/octet-stream'

if ($fmime != 'internal' AND $type[0] == 'application/octet-stream') {

$pinfo = pathinfo($path);

$ext = isset($pinfo['extension']) ? strtolower($pinfo['extension']) : '';

if (!empty($ext) AND !empty($mime[$ext])) {

$type[0] = $mime[$ext];

}

}

return $type[0];

}

$path = '1.txt'; //实际上当前路径并不存在1.txt

var_dump(_getMimeType($path));

/*End of php*/

希望本文所述对大家的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1017841.htmlTechArticlephp准确获取文件MIME类型的方法 本文实例讲述了php准确获取文件MIME类型的方法。分享给大家供大家参考。具体实现方法如下: ? 1 2 3 4 5 6...