欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 模塊
   致謝 | 譯者聲明 | 本篇譯者:金步國 | 本篇譯稿最后更新:2006年1月27日 | 獲取最新版本

Apache模塊 mod_mime_magic

說明通過讀取部分文件內(nèi)容自動(dòng)猜測文件的MIME類型
狀態(tài)擴(kuò)展(E)
模塊名mime_magic_module
源文件mod_mime_magic.c

概述

本模塊采取Unix系統(tǒng)下file(1)命令相同的方法:檢查文件開始的幾個(gè)字節(jié),來判定文件的MIME類型。它被作為當(dāng)mod_mime無法解析時(shí),用來處理的"第二道防線"。

本模塊源自于Unix系統(tǒng)命令file(1)的一個(gè)自由版本,它通過對(duì)來自文件的內(nèi)容使用"Magic數(shù)字"和其它一些線索來判定這個(gè)文件的具體內(nèi)容是什么。本模塊只有當(dāng)"Magic文件"在MimeMagicFile指令中指定時(shí)才有效。

top

"Magic文件"的格式

Magic文件的內(nèi)容是由4-5列的純文本組成的。文件中允許包含空行,但會(huì)被忽略。注釋行使用井號(hào)(#)來引導(dǎo)。剩余的行按下面列被分解:

描述
1開始檢查的起始字節(jié),">"表示基于前面的非">"行。
2

匹配的數(shù)據(jù)類型

byte單個(gè)字符
short機(jī)器字節(jié)順序的16位整數(shù)
long機(jī)器字節(jié)順序的32位整數(shù)
string任意長度的字符串
date長整型的日期(從UNIX紀(jì)元/1970以來的秒數(shù))
beshortbig-endian 16位整數(shù)
belongbig-endian 32位整數(shù)
bedatebig-endian 32位整型日期
leshortlittle-endian 16位整數(shù)
lelonglittle-endian 32位整數(shù)
ledatelittle-endian 32位整型日期
3匹配的數(shù)據(jù)內(nèi)容
4如果匹配文件的MIME類型
5如果匹配文件的MIME編碼方式(可選)

例如,下面的Magic文件行可以認(rèn)出一些音頻格式:

# Sun/NeXT audio data
0      string      .snd
>12    belong      1       audio/basic
>12    belong      2       audio/basic
>12    belong      3       audio/basic
>12    belong      4       audio/basic
>12    belong      5       audio/basic
>12    belong      6       audio/basic
>12    belong      7       audio/basic
>12    belong     23       audio/x-adpcm

還有下面的示例可以區(qū)分帶*.doc擴(kuò)展名的文件到底是Microsoft Word文檔還是Frame Maker文檔(兩種有相同后綴名但不兼容文件格式)。

# Frame
0  string  \<MakerFile        application/x-frame
0  string  \<MIFFile          application/x-frame
0  string  \<MakerDictionary  application/x-frame
0  string  \<MakerScreenFon   application/x-frame
0  string  \<MML              application/x-frame
0  string  \<Book             application/x-frame
0  string  \<Maker            application/x-frame

# MS-Word
0  string  \376\067\0\043            application/msword
0  string  \320\317\021\340\241\261  application/msword
0  string  \333\245-\0\0\0           application/msword

一個(gè)可選的MIME編碼方式可以包含在第五列上。例如下面的行可以認(rèn)出gzip壓縮文件并設(shè)定他們的編碼方式。

# gzip (GNU zip, not to be confused with
#       [Info-ZIP/PKWARE] zip archiver)

0  string  \037\213  application/octet-stream  x-gzip
top

性能問題

并不是每個(gè)系統(tǒng)都適用本模塊的。如果你的系統(tǒng)吞吐量已經(jīng)接近極限,或者你在進(jìn)行web服務(wù)器的基準(zhǔn)測試,你可能不希望啟動(dòng)這個(gè)模塊,因?yàn)樗奶幚頃?huì)顯著影響服務(wù)器的性能。

然而,已經(jīng)有人在努力改進(jìn)最初的file(1)代碼,使它能更適合在一個(gè)非常繁忙的web服務(wù)器上工作。這主要是用在那種有數(shù)千用戶自己發(fā)布文檔的web服務(wù)器上。這在互聯(lián)網(wǎng)上可能是非常常見的情況。很多情況下,如果服務(wù)器能就文件的內(nèi)容作出比用文件名來區(qū)別的方式更加智能化的判斷是非常有用的。甚至在當(dāng)用戶沒有合理地命名他們的文件的情況下,它也可以用來減少那些諸如:"為什么我的頁面不工作啊"之類的報(bào)怨。你必須自己決定這額外的開銷是否適用于你的環(huán)境。

top

注意

下面關(guān)于mod_mime_magic的記錄包含在這里,是按照最初捐助者的版權(quán)限制和為了得到他們的承認(rèn)。

mod_mime_magic: 通過文件的Magic Number查找文件的MIME類型
Copyright (c) 1996-1997 Cisco Systems, Inc.

本軟件由Cisco系統(tǒng)有限公司于1997年7月提交給Apache組織。本軟件源代碼的進(jìn)一步修訂及新版本的派生必須承認(rèn)Cisco系統(tǒng)有限公司是本模塊的原始捐助者。所有其它許可與使用條件都屬于Apache組織。

本模塊的部分源代碼派生于最初發(fā)布在comp.sources.unix上的file命令的自由版本。根據(jù)要求,下面包含了那個(gè)程序的版權(quán)信息。

- Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.

本軟件不隸屬于美國電話電報(bào)公司(AT&T)或者加利福尼亞大學(xué)董事會(huì)的任何許可。

在遵循以下限制的基礎(chǔ)上,任何人被授權(quán)免費(fèi)地在任何計(jì)算機(jī)系統(tǒng)上為任何目的使用、修改與重新分發(fā)這個(gè)軟件:

  1. 不管后果有多嚴(yán)重,甚至是直接由于程序的缺陷造成的,程序的作者對(duì)于由于使用這個(gè)軟件而造成的任何直接或間接的后果不承擔(dān)任何責(zé)任。
  2. 在清晰或冗長的聲明中,軟件的來源必須無誤地?cái)⑹觥S捎谏倭坑脩艨赡軙?huì)閱讀源代碼,源代碼中也必須包含這一聲明。
  3. 改動(dòng)版本必須明白標(biāo)明,必須與原軟件嚴(yán)格區(qū)分開來。由于少量用戶可能會(huì)閱讀源代碼,源代碼中也必須包含這一聲明。
  4. 本聲明不能被刪除或更改。

為了符合MrDarwin的條款:這是從自由的"file"命令而來并經(jīng)過了明顯的修改的版本。

  • 當(dāng)從Apache的一個(gè)版本轉(zhuǎn)移到下一個(gè)時(shí),為了編輯方便,所有代碼在一個(gè)文件中。
  • 內(nèi)存分配通過Apache應(yīng)用程序接口的緩沖池結(jié)構(gòu)完成。
  • 在需要調(diào)用其它Apache應(yīng)用程序接口例程的地方,所有的函數(shù)被提供必需的Apache應(yīng)用程序接口及服務(wù)結(jié)構(gòu)。(例如:通常在它自身或被調(diào)用的程序里包含了日志記錄,文件操作或內(nèi)存分配)
  • Magic結(jié)構(gòu)從數(shù)組被轉(zhuǎn)換成了單終點(diǎn)鏈表,因?yàn)樗看沃辉鲩L一條記錄,它只按順序方式處理,同時(shí)Apache API沒有realloc()的替代處理方法。
  • 函數(shù)被改變成從參數(shù)獲取服務(wù)器配置,而不是全局變量。(現(xiàn)在它應(yīng)該是可重入的,但沒有在線程化的環(huán)境中測試過)
  • 原來用來打印結(jié)果到stdout的地方,被改成將結(jié)果保存到一個(gè)列表,這個(gè)列表被用來在Apache請(qǐng)求記錄中設(shè)置MIME類型。
  • 因?yàn)樵谶@里再也不會(huì)用到命令行標(biāo)志,它們被刪除了。
top

MimeMagicFile 指令

說明使用特定的Magic文件激活根據(jù)文件內(nèi)容確定文件MIME類型的功能
語法MimeMagicFile file-path
作用域server config, virtual host
狀態(tài)擴(kuò)展(E)
模塊mod_mime_magic

MimeMagicFile指令用來激活本模塊,默認(rèn)的Magic文件保存在conf/magic中。相對(duì)路徑是相對(duì)于ServerRoot的。虛擬主機(jī)會(huì)使用與主服務(wù)器相同的配置文件,除非使用了更特別的設(shè)定。在后者情況下,這些特別的設(shè)定會(huì)覆蓋主服務(wù)的設(shè)定。

示例

MimeMagicFile conf/magic