Java开发的B/S程序生成并向客户端发送excel文件:浅谈MIME

本文主要探讨Java开发的B/S应用程序如何利用MIME类型生成并发送Excel文件。MIME是多功能互联网邮件扩展,用于定义非ASCII字符文本、非文本附件等数据类型。在HTTP中,MIME类型通过Content-Type header指定,如发送Excel文件时的'application/vnd.ms-excel'。此外,文章还介绍了MIME信息头、编码方式以及常见的Content-Type类型。
摘要由CSDN通过智能技术生成

Java开发的B/S程序生成并向客户端发送excel文件:浅谈MIME

1、定义

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
它是一个互联网标准,扩展了电子邮件标准,使其能够支持:非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。

在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。
例如,假设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“excel”。在大多数实际情况中,这个文件然后将传送给Excel来处理(假设我们设定Excel为处理特殊MIME类型的应用程序)。在ASP中,设定MIME类型的方法是通过Response对象的ContentType属性。
MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。

2、信息剖析

一个普通的文本邮件的信息包含一个头部分(To: From: Subject: 等等)和一个体部分(Hello Mr.,等等)。在一个符合MIME的信息中,也包含一个信息头并不奇怪,邮件的各个部分叫做MIME段,每段前也缀以一个特别的头。MIME邮件只是基于RFC 822邮件的一个扩展,然而它有着自己的RFC规范集。

头字段

MIME头根据在邮件包中的位置,大体上分为MIME信息头和MIME段头。(译者:MIME信息头指整个邮件的头,而MIME段头只每个MIME段的头。)

MIME信息头有:
  • MIME-Version:
    这个头提供了所用MIME的版本号。这个值习惯上为1.0。

  • Content-Type:
    它定义了数据的类型,以便数据能被适当的处理。有效的类型有:text,image,audio,video,applications,multipart和message。注意任何一个二进制附件都应该被叫做application/octet- stream。这个头的一些用例为:image/jpg, application/mswork,multipart/mixed,这只是很少的一部分。

  • Content-Transfer-Encoding:
    这是所有头中最重要的一个,因为它说明了对数据所执行的编码方式,客户/MUA 将用它对附件进行解码。对于每个附件,可以使用7bit,8bit,binary ,quoted-printable,base64和custom中的一种编码方式。7bit编码是用在US ASCII字符集上的常用的一种编码方式,也就是,保持它的原样。8bit和binary编码一般不用。对人类可读的标准文本,如果传输要经过对格式有影响的网关时对其进行保护,可以使用quoted printable 。Base64是一种通用方法,在需要决定使用哪一种编码方法时,它提供了一个不用费脑子的选择;它通常用在二进制,非文本数据上。注意,任何非7bit 数据必须用一种模式编码,这样它就可以通过Internet邮件网关!

  • Content-ID:
    如果Content-Type是message/external-body或multipart/alternative时,这个头就有用了,它超出了本文的范围。

  • Content-Description:
    这是一个可选的头。它是任何信息段内容的自由文本描述。描述必须使用us-ascii码。

  • Content-Disposition:
    一个试验性的头,它用于给客户程序/MUA提供提示,来决定是否在行内显示附件或作为单独的附件。当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型

  • MIME段头(出现在实际的MIME附件部分的头),除了MIME-Version头,可以拥有以上任何头字段。如果一个MIME头是信息块的一部分,它将作用于整个信息体。例如,如果Content-Transfer-Encoding显示在信息(指整个信息)头中,它应用于整个信息体,但是如果它显示在一个MIME段里,它"只能"用于那个段中。
    注意:其可以对自动对收到的邮件进行解密。

3、类型大全(Content-Type)

格式前面为后辍名,后面为对应的MIME型(例如:rar application/x-rar-compressed 表示。RAR对应的是application/x-rar-compressed )。

{ “.323”, “text/h323” },
{ “.3gp”, “video/3gpp” },
{ “.aab”, “application/x-authoware-bin” },
{ “.aam”, “application/x-authoware-map” },
{ “.aas”, “application/x-authoware-seg” },
{ “.acx”, “application/internet-property-stream” },
{ “.ai”, “application/postscript” },
{ “.aif”, “audio/x-aiff” },
{ “.aifc”, “audio/x-aiff” },
{ “.aiff”, “audio/x-aiff” },
{ “.als”, “audio/X-Alpha5” },
{ “.amc”, “application/x-mpeg” },
{ “.ani”, “application/octet-stream” },
{ “.apk”, “application/vnd.android.package-archive” },
{ “.asc”, “text/plain” },
{ “.asd”, “application/astound” },
{ “.asf”, “video/x-ms-asf” },
{ “.asn”, “application/astound” },
{ “.asp”, “application/x-asap” },
{ “.asr”, “video/x-ms-asf” },
{ “.asx”, “video/x-ms-asf” },
{ “.au”, “audio/basic” },
{ “.avb”, “application/octet-stream” },
{ “.avi”, “video/x-msvideo” },
{ “.awb”, “audio/amr-wb” },
{ “.axs”, “application/olescript” },
{ “.bas”, “text/plain” },
{ “.bcpio”, “application/x-bcpio” },
{ “.bin “, “application/octet-stream” },
{ “.bld”, “application/bld” },
{ “.bld2”, “application/bld2” },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值