MIME的作用 : 使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。

web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。

Tomcat的安装目录/conf/web.xml 中就定义了大量MIME类型 ,你可也去看一下。

最近在做用表单上传文件,想在服务端验证上传文件的类型,只允许上传GIF,JPG,ZIP, 我们有两种方法,

第一:检查文件的扩展名, 第二:检查文件的MIME类型 。

检查文件的扩展名的方法,很简单快捷, 但是  a.jsp 改名为 a.jpg能可以绕过检查上传了。

检查文件的MIME类型的方法,在IE7与Firefox下有一点区别(见下表), 有不同浏览器上传表现不一致。Firefox下ZIP与EXE文件的MIME类型同为application/octet-stream。

所以我决定 两种方法结合使用,先检查扩展名, 再检查MIME,不合格的文件不让上传。

表中例出的是在服务器端(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
  用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

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 图像

用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
序号 内容类型 文件扩展名 描述
1 application/msword  doc  Microsoft Word 
2 application/octet-stream bin  dms lha lzh exe class  可执行程序
3 application/pdf  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  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 图像

MIME类型-服务端验证上传文件的类型的更多相关文章

  1. Socket实例之客户端向服务端数据库上传文件UI版

    http://blog.csdn.net/su20145104009/article/details/52843735 首先实现分析: 1用户注册 客户单选择‘用户注册’,提示要输入用户名,密码,确认 ...

  2. html5 如何实现客户端验证上传文件的大小

    在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...

  3. js判断上传文件的类型和大小

    //检测文件大小和类型 function fileChange(target){ //检测上传文件的类型 if(!(/(?:jpg|gif|png|jpeg)$/i.test(target.value ...

  4. react native android 上传文件,Nodejs服务端获取上传的文件

    React Native端 使用react-native-image-picker 做出选择图片的操作,选择完成后,直接将图片Post至服务器,保存在服务器的某个地方(保存图片的路径需要公开显示),并 ...

  5. java 附件上传时后台验证上传文件的合法性

    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 3 ...

  6. js限制上传文件的类型和大小

    var maxsize = 6*1024*1024;//6M var errMsg = "上传的附件文件不能超过6M!!!"; var tipMsg = "您的浏览器暂不 ...

  7. Abp中SwaggerUI的接口文档添加上传文件参数类型

    在使用Swashbuckle上传文件的时候,在接口文档中希望看到上传控件,但是C#中,没有FromBodyAttribute这个特性,所以需要在运行时,修改参数的swagger属性.   首先看下,最 ...

  8. [JS] 限制上传文件的类型和大小

    <!DOCTYPE html> <!-- saved from url=(0035)http://localhost:9090/qraved/update --> <ht ...

  9. js jquery验证上传文件的格式和大小

    // 验证附件格式和大小 function confirmData() { var flag = true; var message = ""; var errorSize = & ...

随机推荐

  1. android应用开发全程实录-你有多熟悉listview?

    今天给大家带来<android应用开发全程实录>中关于listview和adatper中的部分.包括listview的基本使用,listview的优化等. 我们经常会在应用程序中使用列表的 ...

  2. postgresql+ C#+ DHTMLX 学习汇总

    前台: dhtmlxgrid.显示数据   其格式为: { rows:[ {id:1,data:[1,2,3]} ,{} ]} 如果在postgesql里直接生成这样的串呢?? 这是就今天要做的事. ...

  3. IDEA创建maven项目的web.xml头

    使用IDEA创建maven项目骨架是webapp时,软件自动创建的web.xml文件是2.3版本的,不能使用el表达式,所以可以手动换成4.0的文件头. <?xml version=" ...

  4. Objective-C Inheritance

    One of the most important concepts in object-oriented programming is that of inheritance. Inheritanc ...

  5. 洛谷 U3348 A2-回文数

    题目背景 方方方很喜欢回文数,于是就有了一道关于回文数的题目. 题目描述 求从小到大第n(1<=n<=10^18)个回文数. 注释:出题人认为回文数不包括0. 输入输出格式 输入格式: 一 ...

  6. (转)在SQL Server 2016,Visual Studio 2017环境下,连接数据库屡屡失败,在connectionString上出的问题

    适用情景: 1,ServerVersion出了问题,“SqlCnt.ServerVersion”引发了类型“System.InvalidOperationException”的异常 2,在String ...

  7. LINQ结合正则表达式查询文件系统

    string startFolder = @"D:\Program Files (x86)\Microsoft Visual Studio 12.0\"; IEnumerable& ...

  8. cin 和 getline 混用中需要注意的问题

    这段时间在刷题过程中遇到一个cin和getline混合使用中的问题,解决之后记录如下: 先来看一段代码 #include <iostream> #include <string> ...

  9. .pyc文件的结构体PyCodeObject

    python执行程序时生成的pyc文件里面是,PyCodeObject 的结构体构成,每个命名空间(函数名.import模块等)都会形成一个core block,一个python程序的所有命名空间生成 ...

  10. day3-python 登录

    import datetime # 1. f = open('users') result = f.read() f.close() user_list = result.split() # user ...