浏览 2249 次
锁定老帖子 主题:http实体头及文件内容的下载
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-01
浏览器向服务器提出请求后,服务器要返回响应的结果。 实体头是响应的实体内容的元信息,描述了实体内容的属性,包括 实体信息类型,长度,压缩方法,最后一次修改的时间,数据有效期 Content-Type字段:指出实体内容的MIME类型。 浏览器接收到的是一堆0和1组成的二进制数据,浏览器并不知道 这些数据的具体意义,也就是说它无法知道接收到的是网页,图片,还是excel 文档。web服务器必须通过某种方式来告诉浏览器接收到的实体内容代表的是 哪种格式的数据,浏览器才能进行正确的处理。 计算机应用中有多种通用的数据格式,我们把这些数据格式统称为 MIME类型(Multipurpose Internet Mail Extension多用途Internet邮件扩展) Http也采用MIME来标识不同的数据类型 web服务器通过设置Content-Type中的MIME类型来告诉客户端浏览器它所 发送的数据内容的数据格式 服务器如何知道所发数据内容的MIME类型? 一般web服务器是把从本地磁盘文件中读取到的数据内容发送给客户端。本地 磁盘上的数据文件都有扩展名。web服务器通过设置文件扩展名与MIME类型的映射关系 来自动确定Content-type实体头中的MIME类型。Tomcat中通过在Web.xml中添加 <mime-mapping>元素来实现这种映射。在<Tomcat主目录>/conf目录下的web.xml 中已经建立了各种常见的文件扩展名与MIME类型的映射关系 例如:在浏览器输入http://localhost:8080/index.html,浏览器将收到 的回答中的内容中有:Content-Type: text/html;charset=ISO-8859-1,这样浏览器 识别到是text/html,则将实体内容解析为HTML文档。 【 也可以在dos窗口上输入: telnet 127.0.0.1 8080 然后输入: GET /index.html HTTP/1.1 Host:{空格}{回车} {回车} 就可以看到内容 】 如果输入:http://localhost:8080/jakarta-banner.gif,浏览器将收到 的回答中的内容中有:Content-Type: imgage/gif,浏览器就把图片文件显示出来 如果收到的是音频文件的实体内容,则就会启动本地机上的音频播放器来播放 收到的实体内容中的二进制数据 实现文件下载: (1)Servlet必须告诉浏览器其所输出的内容的类型不是普通的文本文件或者HTML文件, 而是一个要保存到本地的下载文件,这就需要通过HttpServletResponse.setContentType 方法设置Content-Type头字段的值为浏览器无法使用某种方式或者激活某个程序来处理的 MIME类型,如:application/octet-stream或者application/x-msdownload等 (2)需要通过HttpServletResponse.setHeader方法设置Content-Disposition 头的值为"attachment;filename=文件名" (3)调用HttpResponse.getOutoutStream方法返回的ServletOutputStream对象 来向客户端写入文件内容,不要使用PrintWriter对象,因为要下载的文件可能是各种文件类型 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |