`
zengguo1988
  • 浏览: 280148 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

http实体头及文件内容的下载

    博客分类:
  • J2EE
阅读更多
实体头:
浏览器向服务器提出请求后,服务器要返回响应的结果。
实体头是响应的实体内容的元信息,描述了实体内容的属性,包括
实体信息类型,长度,压缩方法,最后一次修改的时间,数据有效期

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对象,因为要下载的文件可能是各种文件类型
分享到:
评论

相关推荐

    libevent实现http服务器实现文件下载功能

    HTTP服务器的响应通常包含状态码、头部信息和可选的实体内容。对于文件下载,我们需设置“Content-Type”头部来标识文件类型,并通过“Content-Length”指定文件大小。如果是分块传输,还可以使用“Transfer-...

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    实体头用于描述实体内容的属性,例如 Content-Encoding、Content-Language、Content-Length 等。 在下载文件时,需要设置 Content-Disposition 头字段来指定文件的名称和类型。但是,如果文件名包含中文字符,可能...

    从HTTP服务器下载文件

    服务器接收到这个请求后,检查请求的合法性,如果资源存在且可访问,服务器将返回一个200状态码,同时携带文件内容作为响应的实体部分。文件内容通常会被分割成多个数据块进行传输,以适应网络环境的变化。 在实际...

    一个RESTful的文件下载方法

    filename=resume+ext`,其中`ext`为上面判断出的文件扩展名,这使得浏览器会提示用户下载文件而不是直接显示文件内容。 5. **响应体设置**: - 如果找到了对应的实体,将`Resume`实体中的`content`属性作为响应体...

    java使用HttpClient通过url下载文件到本地

    在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...

    C++ 实现http下载

    4. **接收HTTP响应**:服务器会返回一个HTTP响应,包括状态行、头部信息和实体内容。C++程序需要解析这些信息,确认请求是否成功,通常通过检查状态码(如200表示成功)。 5. **文件I/O操作**:当接收到文件内容后...

    java实现文件下载,并弹出保存对话框(Excel)

    Java实现文件下载,尤其是处理Excel文件,涉及到多个层面的技术细节,包括但不限于响应头的设置、文件读写、错误处理,以及前端与后端的协调。通过深入理解这些技术要点,开发者可以构建出既高效又安全的文件下载...

    文件上传下载-springboot-demo.zip

    3. **文件读取**:使用`FileInputStream`打开文件,并将其内容流化到HTTP响应中。 4. **响应头**:添加Content-Disposition头,设置`attachment; filename=filename.ext`,这样浏览器就会提示用户保存文件,而不是...

    struts与hibernate实现文件的上传与动态下载

    3. **下载代码**:在Action中,创建一个输入流读取文件,然后通过Servlet的`response.getOutputStream()`创建输出流,将文件内容写入到响应中: ```java response.setContentType("application/octet-stream"); ...

    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

    文件下载通常通过HTTP的`Content-Disposition`响应头来实现。在SpringMVC的控制器方法中,使用`ResponseEntity`来构建响应,设置响应头,包括`Content-Type`(根据文件类型)和`Content-Disposition`(指定文件名)...

    Asp.NET 文件上传下载

    这里,`ContentType`指定文件的MIME类型,`Content-Disposition`头告诉浏览器应以附件形式下载文件,并指定文件名。`TransmitFile()`方法用于发送文件内容到客户端。 **文件上传处理和验证** 为了更好地管理文件...

    servlet+jsp文件上传和下载

    接着,文件下载涉及到创建一个可以提供文件内容的HTTP响应。Servlet通过设置响应头信息,如Content-Disposition和Content-Type,以及使用`ServletOutputStream`将文件内容写入响应体。 2. **文件下载步骤**: - ...

    JSP实现文件下载---源码

    在HTTP响应头中,`Content-Disposition`字段用于指示浏览器如何处理响应的实体内容。当设置为`attachment`时,浏览器通常会触发一个下载对话框,让用户选择保存文件的位置。例如: ```java response.setHeader(...

    spring+hibernate+struts文件上传下载

    在接收到下载请求时,控制器根据URL中的参数查询数据库,找到对应的文件信息,然后读取文件内容并设置响应头,使浏览器能够正确解析和显示文件。例如,设置Content-Disposition为attachment可以触发浏览器的下载...

    http协议头简介

    Content-Disposition头部字段指定了附件的处理方式,通常用于下载文件。 **示例:** ``` Content-Disposition: attachment; filename="example.pdf" ``` #### Transfer-Encoding **定义:** Transfer-Encoding头部...

    计算机软件-商业源码-使用HTTP协议将文件下载到Window.zip

    对于大文件,可能会使用Range头和断点续传功能,以便在中断后从上次停止的地方继续下载。 3. **Windows编程**:在Windows平台上进行文件操作,开发者通常会用到Windows API,例如CreateFile、ReadFile和WriteFile...

    基于springboot实现的文件下载上传

    文件下载则涉及响应头的设置,特别是`Content-Disposition`字段,用来指定浏览器如何处理响应内容。在Controller层,我们可以创建一个返回文件的方法,通过`ResponseEntity`来构建响应,设置正确的响应头并返回文件...

    文件上传和下载

    1. **服务器响应**:当用户点击下载链接或触发下载事件时,服务器返回包含文件内容的HTTP响应,通常设置'Content-Disposition'头部为'attachment',这样浏览器会弹出保存对话框。 2. **数据传输**:浏览器接收服务器...

Global site tag (gtag.js) - Google Analytics