现在的位置: 首页 > 综合 > 正文

mht文件格式

2013年03月06日 ⁄ 综合 ⁄ 共 5557字 ⁄ 字号 评论关闭
    熟悉IE的人可能知道,IE的文件另存为里有一个mht 格式,可以将页面中的内容存为单一的文件。经过笔者测试,这种格式也可在firefox中查看。 本文简单分析一下这种格式。
    写一个简单的html文件,内容如下:
<IMG src="http://www.google.com/options/icons/web.gif">
<IMG src="http://www.google.com/options/icons/news.gif">
用IE打开,另存为mht格式(可自己生成,这里不列出来),经过笔者修改得到如下结果:
==================================开始===========================================
MIME-Version: 1.0
Content-Type: multipart/related;
    boundary="----=_IMG_DATA";
    type="text/html"

------=_IMG_DATA
Content-Type: text/html;
    charset="gb2312"
Content-Transfer-Encoding: 7bit

<IMG src="http://www.google.com/options/icons/web.gif">
<IMG src="http://www.google.com/options/icons/news.gif">

------=_IMG_DATA
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.google.com/options/icons/web.gif

R0lGODlhIwAjAPcAAPLy8jg4N4iJiVpaWujo6Wtra8WQPdTU1P39/2pjY3Jyctr0+72+vmZiX/H7
/tGnZ3Z1dWJiYdze4buHN3xNC9LS0vP//8vLy+Tk5MXt+XNIE7e3t8CMOuy5Z6mpqaKiorKzs/n9
/+n4/uGtXV5eXo+Pj8XFxcCKOaempqimplNTU09OTR8fH/7+/v39/fv7+/7///z8/Pf39/Dw8Pr6
+sLCwvj4+Ovr6/v///X19Xh4ePf9/peXl5ubm/z//83Nzfn5+fHx8b6xnO35+7yXXYJ+dqXFz8vA
rZmZmfT09P///cjw/X17eO/+/+Hv8ISJk6Wdkvf4+v3//+z5/LB7KKSjo8Koe7/s+bu8vKnp/Pj5
+sn6/4JTC+T4/fv6+r3HyG9IEJyeno6eooCAgGdvcGBeXPT//3N2etj5/8Lq9MiSPfj4+X6AguDw
8sjIyNjY2Pb29m50dpqhqoRzWPr+/sLt+VxcXNWaROPj49P5/2M9FJtnF+rq6qrl9f3+/5iUk8OQ
QcWSRGdqa8KwkG5ADMjHyPj5+fj5/PX6/ZyussqWR690HMyaS4eQlFtgX0hAM9TPyMjv+M/LyoCE
iZNeDsb5/9TT06O9xV9ZV8vV17e+yrDp+eDg38nO16GjpuPr7MbBwL+PRtTy9uj4+/z9/bm5udXQ
yru6vMmXTPn+/0g8J8WPOeelPnZycK+vr4JPDpCLgbyDKmlPJPr7+5uhoujt89GeUO3u8Pf3+J2a
mZKSkqCfn+zx8n19fq/M1aHj+GNYSqDi9afl9/X9/9fX14lxTr/Bw9H2/Nf0/t76/a7l9er5/NP8
/+v5/vj18sD5/93d3d7d3LS0tLa2tdmcP+T9/8rz+cucUuPo6OSvX2hKHt6qWtvb2/f29pSUlMOK
NGVlZZynq+Th3uzs7Nz0+vr//1VSUujt9VZWVqSkpImNlPj4919eXNmeRIhzUs6ob9D4/q17Lmc7
CPz8++76/p9mEcLr96iIWVlVUqvl9qvm98a9sLOxsZmXlqjGzv///yH5BAAAAAAALAAAAAAjACMA
AAj/AP8JHDgwhowcQF4QXMiw4cIYJiAEYMFiBb8NABxqbIinRJhMbZx8oZWiFTgQLTaqPFDFxj8z
TSxYqJZGTIMIJWKodHiDR8oQCATCQIRmi78EEXrsZNhiTJJ/UgbCGOiAma8EAw4sJVhBwEIYOFLt
EEjuWSJMvVxsFajLVUMcyxZ0UbZkyBl2BNa2gGDCYblRdYKFsHAJH5a1L0jUcAiDjogrfbKIMpcC
sQoPGmEMW5Dv1zFB/da6UKBArUMczTIIyxMn19p/SFZAy+wgkj54ZEC9voBOh86GMOhl2GTN0brX
LxTY+eDQhwh7lYz8eS2Q2IABIBr6mIIsWaNu1AVK/7veQwZDGDvCSQo/sAYJFRBqwEn5bxY3ASt4
3GAvcIY3HemQMIAgERSAwjgCBMAGL/8owZ8MlpTiAQo/ACEQA8Y0UIwz/Kl0igasPMBJhwK50IJp
Ar3gTj3thAIJiQLRYMMLJv6DiyyLUMPBEUHxd2IOAAAgAw3/YKNHLHeoMQiRHb4wAx8E3DDDP4Vo
8A0jtlhxC4kuBIEBNJxgcAgUr3CAygjviENiCzZgcMAPlnwyByUTANLBA6bA6AIBF0zDgCba7HGC
Adlcs48fawbhRhWeTAIGFRwEMsI2QpAC4wtv7KJOGRTEY8AEHRBRC4z9TfPEIxQYoMgq95xDqkAx
RCAjhyrycEEILFG8OpAhnTABTBESzKMrQQhosYYXw6oUEAA7

------=_IMG_DATA
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.google.com/options/icons/news.gif

R0lGODlhIwAjAPcAAFhYWPHx8XWu7P75kkhISGBgYM7Nx1xcXN7e3svIx66nZ9DQ0JGRkczMzFVV
Vautn8LCwu3t7aWlpaGel3FxccK7dTs7O5KSkra2ttTU1MXFxeLi4oqKijMzM5qamrq6ukJBQMrK
ynp6epycnFBQUL29vbyxYuXl5UVFRaGhoSgoKJaWlqmqrcnIyMDAwL6+vn9/f7CwsGRkZOnp6YKC
guDg4NfX19LS0oyMjP/8lk1NTbi4uLOzs3h4eHR0dGxsbJiYmJSUlK6usB0ZGv/7lf/4lP/2lP/y
k2trak5OTiQkJGhoaGZmZu95ePn5+fz8/P7+/vr6+vT09Nvb2/j4+Pf396ysrO7u7q2trbW1tdra
2qenp/Pz84eHh/X19Y+Pj/v7+/39/Xd3d/Ly8s7Ozv///v7q6vz2iP39/sbGxnx8fP/7lvb29p6e
ns/Pz9LS1N/UcoSGiebm5r++uTg2NmNlaW6Ho5OTk/v7/L+/vq6urp6eonBwdWBcOqmpqcPJyZqY
lXqgzMjIy8i9aO/v7t/cw9/g4ZCRmuref7Cysvf39pWktv/6mP34iOXn6cnX5ry8u7+9uvb19Pb2
9bq5nuHh532z87Wwi9LS0aCgpcS/neXagvr6+5ycmp+hoPf3+PDw8/Lw8OiKicTDufD19drXue7t
6fjxhffx9PPz9PnV1ygmGs7HmEtLS0YhIPJ9fVhYV3yDi6+zs9fKZ1xbTMRqatV5eaifTvGzuLmv
XIuIY/ufn/33kNfOd8HP3cvL0dbVzbKxrNPi6JdOToR9fT1ERNHR0b10dMOXl9SbnUFBRENDQ6qk
eubi38HBwefv79HGeLKzundvM8LExOXv8e/v8Y2Njs7Cb9nQ0OLXf7y7suvr7bGxsalTU29vb9rZ
2uvr6/j4+cTGxv/8me7jfvf29v7+//v8/WEwMJ2pur+9rdjY3vj5+sfHwdPIdC4wMKOjo/r5+P/9
nNrc3//5juTm79PGa8WpsM/PzpuVY+/v783a5W1ubuLh4f/8kv///yH5BAAAAAAALAAAAAAjACMA
AAj/AP8JHEiwoMGDCBMqXMiwocOHECMipILgTgonEhNSmQLhC4MrHr48yUhwTAMrQTh44vLvCRd+
HqBI1OdMwh0OHjxMEWjDhRo9XApYcVjFygUaIlZ8SFMDzL8wedpkyaJByj8pJCAx/LAEHpl+AaII
9ILhhRg1Iq4IZCPBVAASCBRCWhJgoBYGWyTg+DCiQZQoI6VwAJTuUTMZGCdKkGEMI5gGI4BsqStw
G4MvG+ItEmBpXyQGCRs44EBCxwmBGTCiqWegXSUhMDwochRIgB1C1hog3PKOQYYuSmBghAJsgi4T
gzSVMwQphqR5sSbIObFipMEMbQrQkaBFxztwZS7d/zo1Tt6sB3ga4NAQZlIeDSe4aUH4RMqOZXC5
KUlRppS9AUas0QsL7HzzBzZmkFJCAyK0sFAVKwxxgA0q8GGOOrnwUoQ/0ERzTgLHvGLGMxQsMwNC
TkSABQU++NGDBTx0AAsac5gwQBH0VOCLKk10s0soFiABhUwEOWHMCkz4gIUGzrSAAQldoAAAJ9xc
Q0QRZzBDTTJN2ILMO/w4Y0wYAkFxhQgHTFEFGwhggAUGELiBxBIEIBFOJ4iskQM5D6AiSi3o0CFL
CxEMBEUJBMjAwAghzFDFFSVY8cECXcCCwh2p5HPGETlUIAwuwwxBjDiFDhQFDSiI4Q0JJPiQwgJe
RNqAQRZkWONAK4Kso0AORzRCyT2uFJNIP9aVuYEGI4ggAwCsHgADBGNMgQGDOshQTTCbEMGIAnEM
4ck0lBn0BBVu0AAAAQS0QsIPEESQRgMFEDDCJ6z4k40CStRhjBcNQUGGGADo0IoONGQwRR50UABK
IXC404cyMSAg1kNjrCADCkn8wMMGIizziwG35AMCC5g4JVEVEhQAQgEMQGBBJqNIQ8sh+ExMkhQr
oHCABwDsoc0qQbxBBUkEPbEBBQ74IIIDMtxgM9EDOfHBBTDckRrUWGet9dZcd51QQAA7

------=_IMG_DATA
==================================结束===========================================

笔者简单分析认为,下面这一段声明版本、编码等信息。并通过
    boundary="----=_IMG_DATA";
这一句指出二进制数据的位置标识。
MIME-Version: 1.0
Content-Type: multipart/related;
    boundary="----=_IMG_DATA";
    type="text/html"

------=_IMG_DATA
Content-Type: text/html;
    charset="gb2312"
Content-Transfer-Encoding: 7bit

紧接着,是html代码
<IMG src="http://www.google.com/options/icons/web.gif">
<IMG src="http://www.google.com/options/icons/news.gif">

下面是二进制数据。每段二进制数据已类似下面的内容开头
------=_IMG_DATA
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.google.com/options/icons/web.gif

html代码中引用到的url如果正好与 Content-Location属性相同,则使用这段二进制数据,否则查找url指向的内容。
二进制数据以BASE64格式编码,BASE64编码的相关信息请参考CSDN上的介绍(http://dev.csdn.net/article/27/27056.shtm)

最后,文件已下面这句结尾
------=_IMG_DATA

另外要注意的是,每两段之间至少以两个换行分割。

抱歉!评论已关闭.