【原文:http://www.jb51.net/article/89958.htm】

HTTP实现文件下载时,只要在服务器设置好相关响应头,并使用二进制传输文件数据即可,而客户端(浏览器)会根据响应头接收文件数据。而在Node.js中,设置好响应头后,读取文件流,再使用“.pipe()”方法将流转接到响应对象Response就可以实现一个简单的文件下载服务器。

1. 文件下载介绍

HTTP基于请求头和响应头实现状态交互,在得到服务器正确响应状态后,而客户端首先会解析响应头,并根据响应头来接收和展示数据(响应体)。对于文件下载来说,其实现过程如下:

1.客户端发起文件资源请求

2.服务器查找对应文件,并设置”Content-Type”、”Content-Disposition”等响应头,分别用于表示文件的”MIME”类型及文件描述

3.客户端根据服务器返回的响应头解析和接收文件数据

需要设置的响应头

设置文件下载响应头时,除了常用的HTTP响应头外,比较重要是还要设置以下两个响应头:

1
2
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=MyFileName.ext

在上面的设置中,”Content-Type: application/octet-stream”告诉浏览器这是一个二进制文件,”Content-Disposition”告诉浏览器这是一个需要下载的附件并告诉浏览器默认的文件名。如果不添加”Content-Disposition”响应头,浏览器可能会下载或显示文件内容,不同浏览器的处理有所不同。

最新文章

  1. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
  2. ecshop后台分页浅析
  3. jsp还是html+ajax
  4. 关于JQ的$.deferred()
  5. 更新页面缓存OutputCache
  6. Twitter 登录和分享
  7. (转)关于List中FindAll用法的一些简单示例
  8. javascript Date 函数的坑
  9. MyBatis(3.2.3) - hello world
  10. FileZilla 425 Can't open data connection
  11. Laravel Cache 使用
  12. ios多线程开发总结
  13. python 中一些关键字的区别
  14. POJ 1979 红与黑
  15. LeetCode题解之N-ary Tree Preorder Traversal
  16. 设计模式 笔记 解释器模式 Interpreter
  17. jap _spring _maven
  18. CRLF LF CR
  19. CentOS下安装cvechecker并进行主机基线安全检查
  20. decimal类型运算注意点

热门文章

  1. uva1331 Minimax Triangulation
  2. java基础第十一篇之Date、Math、自动装箱和拆箱
  3. java 同时安装多版本问题(转)
  4. [题解](prufer)明明的烦恼
  5. Java带token验证的注册登录
  6. sqlserver跟据当天年月日日期查询数据库当天数据
  7. I/O流操做总结(三)
  8. jsp-简单的猜数小游戏
  9. SQL数据库基础三
  10. mui自定义事件实例