位置: 编程技术 - 正文

浅析Node.js实现HTTP文件下载(node.js gui)

编辑:rootadmin

推荐整理分享浅析Node.js实现HTTP文件下载(node.js gui),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs实战教程,node js教程,node.js javascript,nodejs实战教程,node.js javascript,node.js javascript,node js教程,node js教程,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

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

1. 文件下载介绍

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

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

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

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

需要设置的响应头

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

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

浅析Node.js实现HTTP文件下载(node.js gui)

2. Node.js文件下载服务器实现

接下来我们基于Express 框架实现一个简单文件下载服务器,在这个服务器中主要包括两个功能:服务器文件的浏览、文件的下载。

2.1 添加路由

创建Express应用后,添加如下两个路由:

上面的添加的两个路由分别用于:显示服务器文件、实现文件下载。

2.2 显示服务器文件

实现服务器文件的显示,要通过”fs”模块读取文件目录并进行文件/目录检查等。还需要使用”path”模块处理文件路径。首先引入这两个模块:

显示服务器文件实现代码如下:

上面代码中,读取目录后通过视图文件”files.ejs”显示可下载文件列表。其代码如下:

2.3 实现文件下载

实现文件下载时,可以先读取文件到一个”Buffer”中,再通过”res.send()”或”res.end()”方法发送文件数据,也可以基于流(”Stream”)实现文件数据的发送。使用”Stream”实现文件下载时,可以使用”fs.createReadStream()”方法创建一个可读流,而响应对象Response是一个可写流。这样,只需要通过”.pipe()”方法将文件流转接到Response响应流中即可。

文件下载实现代码如下:

总结

标签: node.js gui

本文链接地址:https://www.jiuchutong.com/biancheng/370763.html 转载请保留说明!

上一篇:nodejs如何获取时间戳与时间差(node 获取当前时间)

下一篇:angularJS 如何读写缓冲的方法(推荐)(angular.js)

  • 带息负债融资成本率意义
  • 关税的征收对象是贸易性商品,不包括
  • 税务师有什么用处
  • 公司购买员工意外保险费会计分录未收到发票
  • 未认证的发票如何作废
  • 会计凭证审核的主要内容
  • 申请100万增值税发票资格
  • 计税金额是含税还是不含税
  • 自建办公楼销售要交土地增值税吗
  • 企业购进材料的会计分录
  • 公司对公租车保险的规定
  • 公司给员工发的工资要交税吗
  • 营业外收入税前列支
  • 商品混凝土的增值税费率
  • 劳务派遣企业差额扣除占比过高怎么办
  • 网上认证服务费可以全额抵扣吗
  • 2020国家生育津贴多少钱
  • 在会计上其他业务是什么
  • 通讯费 个税
  • 小规模手撕发票申报填在哪
  • 销售电梯并安装如何缴纳增值税
  • 项目的投入资金预算表
  • 建筑业 分包
  • win10右键新建卡死
  • 产品销售核算会计分录
  • 股权和债权转让的关系
  • 修建污水厂需要办理哪些审批
  • 企业为员工提供服务要交增值税吗
  • wordpress创建
  • 发票联和抵扣联区别
  • 最贵的节能灯泡品牌
  • php 正则
  • 公司基本户可以收款吗
  • 实收资本(或股本)是什么意思
  • php事务特性
  • 劳务公司企业所得税税负率
  • 发票查真伪是什么意思
  • jquery还用吗2020
  • 如何办理出口退税备案
  • 【Discuz】实现主题标题和正文同时显示
  • 小规模如何申报增值税
  • 建筑企业预缴所得税款税率
  • 快递公司账务处理流程及方法总结
  • sql执行顺序优先级
  • 融资租赁业务应包括哪些
  • 无追保理是投资还是投资
  • 税控盘维护费每年都要交吗
  • 一般纳税人如何交增值税
  • 固定资产净残值和净值的区别
  • 残保金申报基数
  • 盘盈盘亏怎么看
  • 售后维修的会计分录
  • 有哪些企业项目
  • 信息科技领域的违法犯罪行为
  • 工会经费通过应交税费核算吗
  • 企业广告费以后会涨吗
  • 公司抽奖奖品设置
  • 开具电费发票如何入账?
  • 机场员工家属机票
  • 投资收益怎么做帐
  • 怎么判断win7还是win10
  • 获取mac命令
  • 简述linux系统有什么显著特点
  • linux虚拟系统
  • hyper-v是啥
  • welcome.exe - welcome进程是什么意思
  • 老电脑安装win7还是win8
  • win7系统设置鼠标灵敏度
  • w8系统一键恢复
  • 图文详解地理图册电子版
  • final exam是什么意思
  • unity3d官方教程
  • python 下载一个网站上的所有文档
  • jquery插件大全
  • 江苏叉车考试
  • 大渡口在重庆吗
  • 四川税务稽查举报电话
  • 北京税务局网站官网
  • 税务局发票邮寄费用谁承担
  • 安徽省国税局局长是谁
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设