位置: 编程技术 - 正文

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

  • 印花税申报缴纳错误,怎么办
  • 补报以前年度收入后当年所得税怎么处理
  • 金蝶财务软件年末结账步骤
  • 资产减值损失影响利润吗
  • 固定资产投资额包括哪些会计科目
  • 预收款方式销售货物
  • 所得税申报表里季初资产是指什么
  • 餐饮企业销售外购食品 增值税税率cpa
  • 中小企业对应的是
  • 抵押住房属于
  • 个税专项附加扣除具体怎么操作
  • 个税中的住房租金扣除什么意思
  • 增值税发票抵扣多少个点
  • 财政局专利补助政策
  • 注册资本低于实际投资
  • 销售货物物流公司丢件赔偿会计分录
  • 建筑施工企业检查的内容包括什么
  • 跨年度租金收入怎么算
  • 小规模纳税人转成一般纳税人条件
  • 营改增后在建工程转让应缴纳税费有哪些
  • 长期租赁存在的主要原因为什么是节税
  • 劳务费需要预缴税款吗
  • 不抵扣勾选怎么挽回
  • 支出凭证的日期
  • 增值税小规模申报表
  • 会计事务所成本核算方法
  • 预计负债 负债
  • mac系统怎么删除用户
  • i912900k用什么主板好
  • php总结
  • 媒体文件不能播放
  • 在西伯利亚森林中是真实故事吗
  • 长期待摊费用应该怎么摊销
  • php操作oracle
  • 下载下来是php
  • php jsondecode
  • dmsetup remove_all 会不会清掉数据
  • 餐饮小微企业优惠政策2021
  • 织梦模板官网
  • 交通费用怎么报销
  • 商场收取租金如何入账
  • 差旅费的处理
  • 公司不交工会经费有什么后果?工会经费交费时自愿的么?
  • 小额贷款公司如何做账
  • 房地产开发企业增值税怎么算
  • mysql怎么替换某个值
  • 财务费用 科目
  • 企业哪些进项税不能抵扣
  • 暂估管理费用跨年账务处理
  • 国库集中支付是什么意思
  • 政府补助的分类及会计处理方法有哪些
  • 出口报关金额怎么算
  • 对公账户可以转让吗
  • 现金支付现金股利
  • 工程款外地预缴哪些税
  • 建筑企业提供服务的机制保障
  • 库存数据不准确
  • 建账时必须输入的内容有哪些
  • mysql绿色版配置
  • reg.exe是什么程序
  • win10改win8.1
  • 图形工具的作用
  • archlinux安装zsh
  • CentOS上使用Squid+Stunnel搭建代理服务器教程
  • win8系统升级
  • mmc.exe是什么进程
  • win7网络正常网页打不开是什么原因
  • windows 10运行
  • 如何使用ai软件
  • Android 中的 TableLayout 继承自
  • 如何进行js 的测试
  • node.js deno
  • 简述javascript中的函数
  • jquery动态创建元素
  • android开源库
  • jquery获取当前地址
  • android设计模式面试题
  • bpc什么时候进入中国
  • 样板房费用属于开发成本的什么明细科目
  • 税务局风控
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设