位置: 编程技术 - 正文

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

  • 含13%的增值税怎么算
  • 以前年度损益调整在借方是什么意思
  • 个人所得税申报操作流程
  • 上季度弥补以前年度亏损与本季度亏损
  • 季度应收账款周转天数是按多少天除
  • 购物返现活动文案
  • 货车的车辆购置税是多少
  • 预告登记与备案的区别
  • 项目所在地怎么填
  • 行政单位的财务报告包括财务报表和财务情况说明书
  • 出售商标使用权收入计入什么科目
  • 报税显示未进行抄报税
  • 以销定产 以产定销
  • 个体户定期定额申报表怎么填
  • 计提其他应收款坏账
  • 低值易耗品摊销表格
  • word文档打印时不打印批注
  • 记账金额如何处理账户
  • 替换重置的设备更新应考虑
  • 如何把itunes的音乐导入ipod
  • ipcservice.dll是什么?
  • 蓝莓外面的霜
  • 简述php操作mysql数据库的基本步骤
  • 木卫一距离木星多远
  • 资产减值损失如何录入
  • 阿里云天池大赛pdf
  • 废料收入的成本怎么核算
  • 阿里云phpstudy
  • 心形岛屿叫什么名字
  • php的二维数组
  • 演员片酬要分给经纪公司吗
  • 自动驾驶车祸
  • 城建税减半吗
  • cd oobe是什么命令
  • 保障金纳入地方财政吗
  • 什么是固定资产?其特征有哪些
  • 资产负债表中应交税费为负数是什么意思
  • 进项税额申报表怎么填写
  • 扣税免除项
  • 银行存款转银行存款 什么凭证
  • 织梦模板官网
  • python命令行如何退出
  • 以前年度多缴的税
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • mongodb视频教程
  • sql server简单查询
  • 2020年附加税减免怎么填报表
  • 营业外收入需要缴纳印花税吗
  • 成品油企业开具电票前还需要先进行库存下载吗
  • 预付账款期末可能有余额吗
  • 职工罚款的会计处理办法
  • 长期待摊费用的二级科目有哪些
  • 税控设备抵减增值税金额
  • 养猪场财务账目怎么做
  • 代收第三方补偿什么意思
  • 债权投资和其他应收款的区别
  • windows 地址解析命令
  • ubuntu安装软件教程
  • win8.1补丁包
  • win8.1应用商店还能用吗
  • winxp 移动硬盘
  • rhel7.5重置密码
  • win8系统怎么改win10
  • 直通车和百度竞价的区别
  • linux那些事儿
  • aspnet_admin.exe进程是安全的吗 aspnet_admin进程信息查询
  • linux网络不可用
  • thinkpad笔记本键盘无法输入
  • win8运行速度慢怎么办
  • unity 3d资源
  • javascript提交数据
  • nodejs yield
  • 安卓打造世界中文全dlc
  • javascript文字特效
  • python+django
  • javascript面向对象编程指南
  • 国家税务局网发票查验
  • 重庆地方税务局刘飞虎
  • 中国有多少人2022
  • 税控盘如何查询上报汇总成功
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设