MIME类型-服务端验证上传文件的类型
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 |
|
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 | 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 图像 |
MIME类型-服务端验证上传文件的类型的更多相关文章
- Socket实例之客户端向服务端数据库上传文件UI版
http://blog.csdn.net/su20145104009/article/details/52843735 首先实现分析: 1用户注册 客户单选择‘用户注册’,提示要输入用户名,密码,确认 ...
- html5 如何实现客户端验证上传文件的大小
在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...
- js判断上传文件的类型和大小
//检测文件大小和类型 function fileChange(target){ //检测上传文件的类型 if(!(/(?:jpg|gif|png|jpeg)$/i.test(target.value ...
- react native android 上传文件,Nodejs服务端获取上传的文件
React Native端 使用react-native-image-picker 做出选择图片的操作,选择完成后,直接将图片Post至服务器,保存在服务器的某个地方(保存图片的路径需要公开显示),并 ...
- 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 ...
- js限制上传文件的类型和大小
var maxsize = 6*1024*1024;//6M var errMsg = "上传的附件文件不能超过6M!!!"; var tipMsg = "您的浏览器暂不 ...
- Abp中SwaggerUI的接口文档添加上传文件参数类型
在使用Swashbuckle上传文件的时候,在接口文档中希望看到上传控件,但是C#中,没有FromBodyAttribute这个特性,所以需要在运行时,修改参数的swagger属性. 首先看下,最 ...
- [JS] 限制上传文件的类型和大小
<!DOCTYPE html> <!-- saved from url=(0035)http://localhost:9090/qraved/update --> <ht ...
- js jquery验证上传文件的格式和大小
// 验证附件格式和大小 function confirmData() { var flag = true; var message = ""; var errorSize = & ...
随机推荐
- Java实现的断点续传功能
代码中已经加入了注释,需要的朋友可以直接参考代码中的注释.下面直接上功能实现的主要代码: import java.io.File; import java.io.FileNotFoundExcepti ...
- The first step in solving any problem is recognizing there is one.
The first step in solving any problem is recognizing there is one.解决问题的第一步是要承认确实存在问题.
- js的加密和解密
最近在研究js的加密和解密的问题,上网上搜出来很多方法,不过不知道到底哪一个会比较管用.这里是今天找到的一些关于base64加密解密的js代码,已经经过试验,可以使用,不过网上很多加密解密的工具,这种 ...
- (转载)资源字典(Pro WPF 学习)
原地址:http://www.cnblogs.com/yxhq/archive/2012/07/09/2582508.html 1.创建资源字典 下面是一个资源字典(AppBrushes.xaml), ...
- SAP OData编程指南
OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用.我的文章标题前加上SAP的前缀,只是为了表明这篇文章介绍的是Jerry在SAP项 ...
- Python:numpy数组转换为json格式
在python中,如何将一个numpy数组转换为json格式? 这是最近遇到的一个问题,做个笔记. 假设arr为numpy数组,将其转换为json格式: 总体思想是①首先转换为python的list, ...
- 监控服务端口状态python脚本
#!/usr/bin/python import socket,os,time data={ 8080:"tomcat9", 18080:"tomcat_hjgdmj&q ...
- 使用控件的Tag属性传递信息
实现效果: 知识运用: Control类的Tag属性 //获取或设置包含 有关控件的数据的对象 public object Tag {get;set;} 实现代码: private void Form ...
- 2018.3.12 Leecode习题 给定一个整数数列,找出其中和为特定值的那两个数。
给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = 9; 因为 ...
- php面试相关
22.描述一下大流量高并发量网站的解决方案 答: 1.确认服务器硬件是否足够支持当前的流量. 2.使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库. ...