项目中web上需要提供一个下载文件的功能,我们的web服务器用的是nodejs,nodejs提供了一个非常方便的下载函数。直接调用res.download即可。

app.get('/download', function(req, res){res.download(path, filename); // Set disposition and send it.
});

不过,此方法在IE下不能正常工作。为了能够兼容IE,最后采用了如下方案,先把数据流转成blob,而后再打开blob文件。

IE浏览器调用window.navigator.msSaveBlob,其他浏览器用Filesaver保存,FileSaver可以用这里下载https://github.com/eligrey/FileSaver.js/

我的二进制文件使用了base64编码,所以先将base64编码转成blob。

具体的调用代码如下:

var blob = b64toBlob(data);
if(isIE()){window.navigator.msSaveBlob(blob, "file");
} else{saveAs(blob, "file");
}function b64toBlob(b64Data, contentType, sliceSize) {contentType = contentType || '';sliceSize = sliceSize || 512;var byteCharacters = atob(b64Data);var byteArrays = [];for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {var slice = byteCharacters.slice(offset, offset + sliceSize);var byteNumbers = new Array(slice.length);for (var i = 0; i < slice.length; i++) {byteNumbers[i] = slice.charCodeAt(i);}byteArrays.push(new Uint8Array(byteNumbers));}return new Blob(byteArrays, {type: contentType});
}

nodejs 下载文件相关推荐

  1. nodeJS IOS手机和平板端在微信中下载文件时,弹出框中文件名乱码解决方案(Content-disposition:attachment; filename)

    今天做项目的时候遇见一个问题.下载文件时在谷歌,Edge和火狐中文件名是正确显示的.但是在IOS端(这里我只是测试了平板和手机,苹果电脑的safari没有测试)微信弹窗中会出现%E4%BA%BF%E6 ...

  2. nodejs 查看下载文件路径_QQ、迅雷、新浪等App下载文件保存路径以及隐藏文件提取...

    01 手机QQ 根据安卓系统新规,QQ目前的存储路径见下图 02 手机迅雷 当前迅雷下载文件存储路径见下图 03 QQ浏览器 QQ浏览器看见喜欢的小视频想保存下来怎么办,不用担心,目前新的缓存路径为 ...

  3. Blazor 中如何下载文件到浏览器

    Blazor 中如何下载文件到浏览器 目录 一.前言 二.方法一(导航跳转) 三.方法二(下载后传出) (一) 使用 RestSharp 下载 (二) 使用 BlazorDownloadFile 传出 ...

  4. nodejs下载及安装(windows)

    1.nodejs官网下载node 2.解压缩zip 注:新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载N ...

  5. 前端中关于下载文件问题

    大部分文件下载都是在服务器放置好需要下载的资源,然后由服务器配置可以下载的文件类型,由系统去判断权限.如果文件比较小,不想通过系统去判断权限给出下载地址,如何在前端完成下载功能呢? 只需要将数据准备好 ...

  6. nodejs下载安装、npm环境配置、yarn下载与环境配置

    Windows 安装nodejs.npm.yarn 一.nodejs下载与安装 1. 下载 1.1 打开浏览器搜索nodejs 1.2. 下载nodejs 2. 安装 按照图中指示完成安装即可 至此n ...

  7. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  8. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...

  9. linux快捷上传下载文件

    借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混): ...

最新文章

  1. ffmpeg 压缩视频
  2. 匹兹堡计算机科学公司,2017美国匹兹堡大学计算机科学CS专业硕士录取
  3. Entity Framework 4.1 DbContext使用记之二——如何玩转本地实体? DbSet.Local属性的使用与实现...
  4. 跨域加了header也解决不了?
  5. java中BigDecimal的常见用法
  6. 8 张图,看你是否理解 Java
  7. 在虚拟机上安装redis集群,redis使用版本为4.0.5,本机通过命令客户端可以连接访问,外部主机一直访问不了...
  8. day4-mysql数据关系
  9. 面试思考,入职初期怎么做
  10. 动态规划--矩阵链乘法
  11. import keras的错误module ‘tensorflow.compat.v2‘ has no attribute ‘__internal__‘
  12. 机器学习特征与类型概述
  13. 从360图书馆抓取全球国家的中文名与英文名(requests_html)
  14. 睿智的目标检测28——YoloV4当中的Mosaic数据增强方法
  15. bugku 我永远喜欢穹妹
  16. onmouseover 和onmousemove的区别
  17. CharacterUtils 判断中英文,英文大小写
  18. vim /etc/hostname1输入命令后进入到以下界面。
  19. SMB交换机、接入交换机、汇聚交换机、核心交换机
  20. webapi中使用token验证(JWT验证)

热门文章

  1. python快速实现2048小游戏
  2. 折腾win7:保护眼睛,修改资源管理器背景颜色 xp适用
  3. 【技术干货】近五年美团|阿里|字节|腾讯大厂精选文章后端篇
  4. 软件测试Mysql数据库学习(一)
  5. 【深度学习】深度学习简介
  6. 欧拉函数性质证明 : n所有约数的欧拉函数和等于n
  7. stm32 软件怎么设置写保护_STM32F407 读保护,写保护,解锁过程【芯片已设置读保护,无法读取更多信息】...
  8. java代码在页面实现展示pdf文件
  9. esxi架设Panabit+网桥模式
  10. Windows 无法连接到SENS服务