pdf的contenttype的简单介绍
常见的Content-Type字段的值
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
这些数据类型总称为? MIME type ?,每个值包括一级类型和二级类型,之间用斜杠分隔。
MIME type还可以在尾部使用分号,添加参数,如 Content-Type:text/html; charset=utf-8。
除了预定义的类型,厂商也可以自定义类型,如 application/vnd.debian.binary-package。
浏览器打开pdf文件
这是Servlet里的发送response的代码吧。
看起来是ContentType设置上有问题。解决方法如下,可以做一条就试一下是否解决这个问题了,直至完成。
1) 作条件判断,如果是pdf文件的话,setContentType改为
response.setContentType("application/pdf");
2) 如果是IE,确认Acrobat Reader的浏览器Add-on已经安装。如果是其他非IE核心的浏览器,确认MIME application/pdf已经映射到本地打开方式或插件打开方式。
3) 如果感兴趣的话,你可以试试其他浏览器下的效果。

文档的内容类型(ContentType)
文/桂浮云,2020年2月12日
参考文献: ECMA 376(第五版)
Office Open XML格式的.docx文档,可以理解为一个Zip压缩包。最小的文档压缩包之中,应当至少包含3部分内容:1.ContentType定义;2.关系定义;3.主文档内容定义。
既然文档是一个压缩包(Package),我们就应该知道其中必然包含了若干被压缩的文件,这些被压缩的文件可以称之为为文档包的片段(part)。
在这些片段(或者说被压缩的文件之中),有一个定义包中其他文件内容类型(ContentType)的文件很关键,物理上,它是存储于文档压缩包(Package)内根目录的[Content_Types].xml的片段文件。
既然扩展名是.xml,所以,它是以XML语言编写的,需要通过相关的Xml库进行读写。从文件内容来看,它以Types为根节点,主要包含Default和Override两种子节点。
用于定义默认内容类型,定义了与文件扩展名对应的内容类型。XML格式为Default Extension="扩展名" ContentType="内容类型" /。注意,这里的扩展名不带英文小数点(.)。
用于定义与具体片段文件对应的内容类型。XML格式为:Override PartName="片段文件物理存储路径" ContentType="内容类型" /。
[Content_Types].xml片段文件内容,必须至少指定 两类ContentType 。 其一,用于指定存储主文档内容的片段文件 , 其二,用于指定各种包与片段、片段与片段的关系 。
此种ContentType作用比较容易理解,主要是为了通过指定的ContentType,方便查找存储实际文档内容的片段文件。通过ECMA376的示例与实际情况对比来看,有ContentType相同,主文档片段文件物理存储位置不同的情况。
主文档片段的ContentType通常为 application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml,没有发现不同;但在包(Package)中的物理存储路径有位置不同的情况,有的放在了包(Package)的根目录,有的放在了word目录之下。所以建议由ContentType确定主文档片段文件的存放位置。
此种ContentType,通过Override节点获取对应的信息,形式大致如下:
Override PartName =" word/document.xml " ContentType =" application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml " /
再次提醒, 主文档片段文件的PartName可能存在变化,ContentType相同 。或参考ECMA-376的相关说明。
无论是哪种关系,这种关系同样以包(Package)内片段(part)文件的形式存在,关系文件的扩展名通常为rels。其中,包与片段之间的关系,我们可以称之为 包级关系 ,对于整个docx文件而言,是必须的;片段与片段之间的关系,称之为 片段级关系 ,根据实际需要确定,所以,不一定存在。
根据上面的描述,我们可以猜想到,在实际的文档打包中,并关系文件不唯一。因此,关系文件的ContentType通常由Default子节点定义,或者更应该说,关系文件的扩展名通常由特定的ContentType指定。形式大致如下:
Default Extension =" rels " ContentType =" application/vnd.openxmlformats-package.relationships+xml " /
不过,包级关系文件的位置是固定的,为/_rels/.rels,实际是以Relations为根节点的XML文件。包级关系文件必须隐含指定包与存储主文档片段文件的 关系 ,以及视需要而存在的与原始数字签名、文件属性片段文件、缩略图等之间的 关系 。
(续见: 文档的关系定义
)
什么是content-type类型
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。
Content-Type是Http的实体首部字段,用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在。
常用类型:
一、application/x-www-form-urlencoded
1、浏览器的原生form表单。
2、提交的数据按照 key1=val1key2=val2 的方式进行编码,key和val都进行了URL转码。
二、multipart/form-data
常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。
首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。
消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。
三、application/json
消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用。
四、text/xml
是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。
http请求头content-type类型常见值
通常HTML网页中这样写:meta content-type="text/html;charset=utf8"
可以看到我们经常用到请求头的媒体类型是text/html。
另外,常见媒体类型:
1、text/html: HTML格式。(返回HTML文本)
2、text/plain :纯文本格式。(返回的是纯文本) ? ? ?
3、text/xml :XML格式。(返回XML文本)
4、image/gif :gif图片格式。 (返回图片) ??
5、image/jpeg :jpg图片格式。?(返回图片)
6、image/png:png图片格式。(返回图片)
以application开头的媒体类型:
7、application/x-www-form-urlencoded : form encType=""中默认的提交数据的方式,如果省略的话就是这种方式。表单的数据会被编码为key/value格式发送到服务器。
8、multipart/form-data : 在表单中上传文件时,设置这种类型。(在表单中经常使用,它不是application开头的)。
9、application/xml:返回xml数据格式
10、application/json:返回json数据格式。
11、application/pdf: 返回pdf格式。