response.setContentType() 的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。例如web浏览器就是通过MIME 类型来判断文件是GIF图片。通过MIME类型来处理json字符串。
Tomcat的安装目录/conf/web.xml 中就定义了大量MIME类型 ,你可也去看一下。
用表单上传文件,想在服务端验证上传文件的类型,只允许上传GIF,JPG,ZIP, 我们有两种方法:
第一:检查文件的扩展名;
第二:检查文件的MIME类型 。
检查文件的扩展名的方法,很简单快捷,但是 a.jsp 改名为 a.jpg能可以绕过检查上传了。
检查文件的MIME类型的方法,在IE7与Firefox下有一点区别(见下表),有不同浏览器上传表现不一致。Firefox下ZIP与EXE文件的MIME类型同为application/octet-stream。
表中例出的是在服务器端(tomcat5.5)接收不同浏览器上传的文件时,取得的MIME类型
|
|
用IE7上传 |
用Firefox3.0上传 |
|
GIF |
image/gif |
image/gif |
|
JPG |
image/pjpeg |
image/jpeg |
|
ZIP |
application/x-compressed |
application/octet-stream |
|
JSP |
text/html |
text/html |
|
EXE |
application/octet-stream |
application/octet-stream |
常见MIME类型例表:
|
序号 |
内容类型 |
文件扩展名 |
描述 |
|
1 |
application/msword |
doc |
Microsoft Word |
|
2 |
application/octet-stream bin |
dms lha lzh exe class |
可执行程序 |
|
3 |
application/pdf |
|
Adobe Acrobat |
|
4 |
application/postscript |
ai eps ps |
PostScript |
|
5 |
appication/powerpoint |
ppt |
Microsoft Powerpoint |
|
6 |
appication/rtf |
rtf |
rtf 格式 |
|
7 |
appication/x-compress |
z |
unix 压缩文件 |
|
8 |
application/x-gzip |
gz |
gzip |
|
9 |
application/x-gtar |
gtar |
tar 文档 (gnu 格式 ) |
|
10 |
application/x-shockwave-flash |
swf |
MacroMedia Flash |
|
11 |
application/x-tar |
tar |
tar(4.3BSD) |
|
12 |
application/zip |
zip |
winzip |
|
13 |
audio/basic |
au snd |
sun/next 声音文件 |
|
14 |
audio/mpeg |
mpeg mp2 |
Mpeg 声音文件 |
|
15 |
audio/x-aiff |
mid midi rmf |
Midi 格式 |
|
16 |
audio/x-pn-realaudio |
ram ra |
Real Audio 声音 |
|
17 |
audio/x-pn-realaudio-plugin |
rpm |
Real Audio 插件 |
|
18 |
audio/x-wav |
wav |
Microsoft Windows 声音 |
|
19 |
image/cgm |
cgm |
计算机图形元文件 |
|
20 |
image/gif |
gif |
COMPUSERVE GIF 图像 |
|
21 |
image/jpeg |
jpeg jpg jpe |
JPEG 图像 |
|
22 |
image/png |
png |
PNG 图像 |
|
|
|
|
|
text/html HTML
text/plain TXT
text/xml XML
text/json json字符串
本文详细介绍了MIME类型在区分不同种类数据时的重要性,以及如何在服务端验证上传文件的类型,包括使用文件扩展名和MIME类型两种方法。文章还列举了常见MIME类型及其对应文件扩展名,并通过对比不同浏览器上传同一文件时获取的MIME类型,展示了在实际应用中可能出现的差异。

401

被折叠的 条评论
为什么被折叠?



