zoukankan      html  css  js  c++  java
  • 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

    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 图像
  • 相关阅读:
    CentOS7 部署K8S集群成功后,重启就不能用了???k8s环境自启动
    k8s环境部署本地.net core web项目
    CentOS7 部署K8S集群,最新版1.17.3-0
    VM安装Linux Centos7.0虚拟机
    Dapper.Contrib拓展及数据库生成实体
    解决EF没有生成字段和表说明
    C#使用AutoMapper6.2.2.0进行对象映射
    .NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录
    Asp.net Core2.0 缓存 MemoryCache 和 Redis
    目录
  • 原文地址:https://www.cnblogs.com/superfeeling/p/3841659.html
Copyright © 2011-2022 走看看