多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。
内容类型(Content-Type),这个头部领域用于指定消息的类型。一般以下面的形式出现。
Content-Type: [type]/[subtype]; parameter
type有下面的形式。
subtype用于指定type的详细形式。content-type/subtype配对的集合和与此相关的参数,将随着时间而增长。为了确保这些值在一个有序而且公开的状态下开发,MIME使用Internet Assigned Numbers Authority (IANA)作为中心的注册机制来管理这些值。常用的subtype值如下所示:
此外,尚未被接受为正式数据类型的subtype,可以使用x-开始的独立名称(例如application/x-gzip)。vnd-开始的固有名称也可以使用(例:application/vnd.ms-excel)。
parameter可以用来指定附加的信息,更多情况下是用于指定text/plain和text/htm等的文字编码方式的charset参数。MIME根据type制定了默认的subtype,当客户端不能确定消息的subtype的情况下,消息被看作默认的subtype进行处理。Text默认是text/plain,Application默认是application/octet-stream而Multipart默认情况下被看作multipart/mixed。
DataFlavor
提供有关数据的元信息。DataFlavor
通常用于访问剪切板上的数据,或者在执行拖放操作时使用,封装了MIME格式。
imageFlavor
的 MIME 类型是
"image/x-java-image;class=java.awt.Image"
,基本类型是
image
,子类型是
x-java-image
,表示形式类是
java.awt.Image
。当调用
getTransferData
,且
DataFlavor
为
imageFlavor
时,返回
java.awt.Image
的实例。要重点注意的是,
DataFlavor
不会依据表示形式类进行任何错误检查。由
DataFlavor
的使用者(如
Transferable
)决定是否遵守表示形式类。
DataFlavor
实例可能有一个 "charset" 参数。有关 "text" MIME 类型和 "charset" 参数的详细信息,请参阅 RFC 2046 和
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])
。
DataFlavors
的相等性由基本类型、子类型和表示形式类决定。有关详细信息,请参阅 equals(DataFlavor)
。在确定相等性时,所有可选参数都被忽略。例如,以下代码产生的两个 DataFlavors
被认为是相等的:
DataFlavor flavor1 = new DataFlavor(Object.class, "X-test/test; class=<java.lang.Object>; foo=bar"); DataFlavor flavor2 = new DataFlavor(Object.class, "X-test/test; class=<java.lang.Object>; x=y"); // The following returns true. flavor1.equals(flavor2);正如上面提到的那样,
flavor1
和
flavor2
被认为是相等的。同样地,请求
Transferable
或
DataFlavor
将返回相同的结果。