位置: 编程技术 - 正文

浅析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)

  • 金税盘抵减增值税的账务处理
  • 套期会计新旧准则对比
  • 税金计提多了,交少了怎么处理
  • 实收资本增加印花税税目
  • 工程招标费计入什么科目
  • 预收账款负数重分类调整
  • 贸易公司没有仓库需要做入库
  • 城建税的征税范围是什么
  • 商业企业销售化妆品
  • 确认以前年度收入怎么做账
  • 商业会计主要做什么帐
  • 无形资产研发成功并申请专利
  • 租客一次性支付一年租金需要交个税吗
  • 被辞退还有退休金吗
  • 高速公路通行费怎么计算的
  • 出口免费样品发票怎么开
  • 水利基金的计税依据是含税收入还是不含税收入
  • 开具发票时提示离线发票累计金额超限?教你如何处理
  • 只要有收入就要交印花税吗
  • 对方发票丢失开什么证明
  • 失控发票怎么做账处理
  • 质押股票是否缴印花税
  • 工资个人所得税标准表
  • 利润调整分录
  • 小规模企业国税怎么报税
  • 研发费用属于期余资产吗
  • macos monterey支持哪些显卡
  • 美元汇款怎么汇
  • 怎么把qq垃圾全部清除
  • php数组函数大全
  • 企业重组税收政策汇编
  • php用img显示图片
  • 购进的货物
  • nginx加php
  • 南极岛在哪
  • 劳务费用 税
  • php弹出登录框
  • 采购折让分录
  • vue系列教程
  • 人体姿态识别国内外研究现状
  • 结构体基本知识
  • yolov5加入注意力机制后网络后进行剪枝
  • thinkphp d方法
  • 小规模纳税人什么意思
  • 空调入固定资产几年折旧
  • 海关缴款书能重开吗
  • 工程主营业务收入
  • 海关进口增值税专用缴款书如何抵扣
  • 股东的投资款能转为借款
  • 企业交房租没有发票能充费用吗
  • 承兑能随便给别人看吗
  • php mysql教程
  • 补贴收入是否缴纳个税
  • 财产租赁合同印花税双方都要交吗
  • 纳税调整调减有哪些
  • 行政单位应缴预算款原则上按月缴清
  • 在建工程什么时候用
  • 增值税发票开负数怎么做账?
  • 新成立的教育机构值得去吗
  • 商业养老保险有风险吗
  • 公对公转账后对方拒绝开发票
  • 公司向个人借款利息可以税前扣除吗
  • 汽车折旧计算方法2023折旧率
  • 利用MySQL统计一列中不同值的数量方法示例
  • 文档介绍
  • vmware虚拟机无法打开内核设备怎么办
  • wcu.exe是什么
  • win10系统怎么清理电脑垃圾
  • macbookair2015安装win7 单系统
  • js 小数取整的函数怎么写
  • python读取一个文件并写入另一个文件
  • 非营利组织税务处理
  • 税务实地核实工作程序
  • 财税刘毅
  • 河南商丘医疗保险在微信上怎么交
  • 如何打印个税缴纳记录
  • 开票金额有限额吗
  • 电子税务局都能完成哪些功能
  • 公司残疾员工是什么待遇
  • 烟叶进口关税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设