Home >Backend Development >PHP Tutorial >How to accurately obtain the MIME type of a file in php_PHP tutorial

How to accurately obtain the MIME type of a file in php_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:50:37783browse

How to accurately obtain the MIME type of a file in php

This article describes the method of accurately obtaining the MIME type of a file in php. Share it with everyone for your reference. The specific implementation method is as follows:

?

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*/

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1017841.htmlTechArticleHow to accurately obtain the MIME type of a file in php. This example describes how to accurately obtain the MIME type of a file in php. Share it with everyone for your reference. The specific implementation method is as follows: ? 1 2 3 4 5 6...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn