位置: 编程技术 - 正文

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

  • 模具费怎么入账
  • 在外地预缴的印花税如何扣除
  • 纳税登记的内容
  • 培训费计入办公会计科目吗?
  • 进项税额在贷方怎么登明细账
  • 公司三年零申报后注销
  • 财务利润率
  • 开票时显示没有原票抄报信息
  • 总分机构企业所得税汇算清缴
  • 铁路大票抵扣几个点
  • 耗材如何入账
  • 不够起征点免缴的增值税如何做税务处理?
  • 车改补贴是否计入工资总额
  • 旧的活动板房多少钱一个
  • 房地产开发经营企业确认当期因销售房地产
  • 企业改制后职工有几项补偿
  • 房地产企业预付账款为负数
  • 败诉赔偿如何支付
  • 一次性工伤补偿金公司不给怎么办
  • 一般商贸企业出口白酒要交税吗
  • 上月抵扣的进项税这个月怎么做分录
  • 预付款比例怎么算
  • appdata如何移动
  • win7桌面快捷键是什么
  • 物流公司的财务能学到东西吗
  • php调用sql
  • 电脑取消共享文件夹
  • 小程序嵌入h5页面可以不写安全地址吗为什么
  • 回迁房办产权证的时候需要交多少钱
  • php提交表单数据有哪几种方法
  • git简明教程
  • 保姆级教程什么意思
  • js数组分组并排序
  • linux写c++程序
  • 选择相邻兄弟需要使用下列哪个符号
  • 增资扩股税务处罚标准
  • 增值税附加税减免政策2022年
  • 公司5个印章都刻错了
  • MySQL慢查询优化面试问题
  • python有public
  • 资产无偿划转会计处理
  • mysql索引最大数量
  • 销货方怎么开红字发票
  • 个税手续费返还要交企业所得税吗
  • 购买加油卡走哪个平台好
  • 海关缴款通知书怎么查看
  • 预收租金发票怎么开
  • 小微企业流转税优惠政策
  • 管理费用的核算要求
  • 应收账款坏账计入资产减值损失还是信用减值损失
  • 应付职工薪酬的工资是实发工资还是应发工资
  • 退货回去需要把原包装保留吗
  • 记账凭证应交税费填写样本图片
  • 职工薪酬的范围及内容
  • 股东增资有哪几种方法
  • 营业外支出增加说明了什么
  • mysql批量执行sql文件
  • MySQL中使用____关键字来删除表格中的数据
  • win8系统的电脑
  • linux操作系统安装包
  • win10通讯设置在哪
  • mac阻止itunes自动弹出
  • linux epub阅读器
  • Win8/8.1下通过dism命令解压install.wim文件步骤
  • win8切换到桌面
  • 折腾linux 没意义
  • [置顶]公主大人接下来是拷问时间31
  • cocos做游戏
  • cocos2dx运行原理
  • 动态加载dll错误
  • jquery动态设置css
  • JavaScript浏览器插件制作
  • 请不要重复犯我在学习Python和Linux系统上的错误
  • 高博应诺官网
  • android程序崩溃会被重启
  • 得之于社会要回馈社会的感想
  • 咸阳高新区税务局地址
  • 如何在河南省社会保障网上平台进行社保基数申报
  • 国税系统公务员调动
  • 食品烟酒消费包括哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设