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

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

Apache模塊 mod_mime_magic

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

概述

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

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

top

"Magic文件"的格式

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

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

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

byte單個字符
short機器字節(jié)順序的16位整數(shù)
long機器字節(jié)順序的32位整數(shù)
string任意長度的字符串
date長整型的日期(從UNIX紀元/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ù)內容
4如果匹配文件的MIME類型
5如果匹配文件的MIME編碼方式(可選)

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

# 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擴展名的文件到底是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

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

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

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

性能問題

并不是每個系統(tǒng)都適用本模塊的。如果你的系統(tǒng)吞吐量已經接近極限,或者你在進行web服務器的基準測試,你可能不希望啟動這個模塊,因為它的處理會顯著影響服務器的性能。

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

top

注意

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

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

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

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

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

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

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

  1. 不管后果有多嚴重,甚至是直接由于程序的缺陷造成的,程序的作者對于由于使用這個軟件而造成的任何直接或間接的后果不承擔任何責任。
  2. 在清晰或冗長的聲明中,軟件的來源必須無誤地敘述。由于少量用戶可能會閱讀源代碼,源代碼中也必須包含這一聲明。
  3. 改動版本必須明白標明,必須與原軟件嚴格區(qū)分開來。由于少量用戶可能會閱讀源代碼,源代碼中也必須包含這一聲明。
  4. 本聲明不能被刪除或更改。

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

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

MimeMagicFile 指令

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

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

示例

MimeMagicFile conf/magic