博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内容类型(ContentType)与文件扩展名(Extension)相互映射
阅读量:6485 次
发布时间:2019-06-23

本文共 1685 字,大约阅读时间需要 5 分钟。

   ContentType : 指内容类型,一般指网页中的ContentType,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式,什么编码读取文件。

   文件扩展名(Extension):文件扩展名是操作系统用来标示文件格式的一种机制。

 

   通常情况下通过文件扩展名就能大致的推断出文件的内容类型,不过这不是绝对的,因为文件扩展名通常可以人为设置而不会影响到文件的内容类型。

  我们可以查看Http ContentType与文件扩展名对照表了解相关对照,还可以了解一下  MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展名。

 

  Web开发中经常与ContentType打交道,了解Tomcat Web容器的话可以在其conf/web.xml查看MIME的映射信息,比如:

 

        
png
        
image/png
    

  另外可以查看开源中国提供的Http ContentType 对照表:

     下面说说在开发中遇到的一个问题:

     通常情况下我们是通过解析一个文件来获取它的ContentType, 而当Http请求获取文件,从得到的响应信息中获取到ContentType值之后,该以什么样的文件类型保持数据呢?这个时候就得用到ContentType映射Extension。

    有一个实际案例,我在使用七牛云存储的时候,上传一个文件("app.png"), 根据上传规则,我需要设置一个key(也就是云存储中的文件名),如果key是一个不带扩展的名的文件名,那么我在应用程序中做一次请求(http://secondriver-dev.qiniudn.com/1399965230092)的时候,该以什么样的扩展名来保存这个文件,当然即使保存文件不设置扩展名,对于文件的内容没有影响,只是在打开文件的时候需要选择打开文件的应用程序。

   下面将开源中国提供的Http ContentType对照表提取出来,做成Java类。

   参见附件: MIME文件,Extension与ContentType(使用时去掉 .txt后缀)。

    下面是通过PHP脚本解析MIME,来提取其中的Extension=ContentType对。

    

";    print_array($extension_array);    echo "

";    print_array($contenttype_array);    function print_array($array){        for($i=0, $length=sizeof($array); $i<$length; $i++){            echo '"'.$array[$i].'"';            if($i != $length-1){                echo ", ";            }        }    }    function validate_array($array){        if(sizeof($array)!=4){            return false;        }else{            foreach ($array as $key => $value) {                if($value === " "){                    return false;                }            }            return true;        }    }    echo '

一共'.$i.'条映射

';    fclose($resource);?>

  

通过上面PHP代码解析MIME文件,就可以根据具体需要来使用Extension与ContentType映射。

转载地址:http://denuo.baihongyu.com/

你可能感兴趣的文章
创建一个多级文件目录
查看>>
Activity竟然有两个onCreate方法,可别用错了
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
VuePress手把手一小時快速踩坑
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Pyrex也许是一个好东西
查看>>
WINFORM WPF字体颜色相互转换
查看>>
能力不是仅靠原始积累(三)
查看>>
彻底学会使用epoll(一)——ET模式实现分析
查看>>