nodejs 下载文件
项目中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 下载文件相关推荐
- nodeJS IOS手机和平板端在微信中下载文件时,弹出框中文件名乱码解决方案(Content-disposition:attachment; filename)
今天做项目的时候遇见一个问题.下载文件时在谷歌,Edge和火狐中文件名是正确显示的.但是在IOS端(这里我只是测试了平板和手机,苹果电脑的safari没有测试)微信弹窗中会出现%E4%BA%BF%E6 ...
- nodejs 查看下载文件路径_QQ、迅雷、新浪等App下载文件保存路径以及隐藏文件提取...
01 手机QQ 根据安卓系统新规,QQ目前的存储路径见下图 02 手机迅雷 当前迅雷下载文件存储路径见下图 03 QQ浏览器 QQ浏览器看见喜欢的小视频想保存下来怎么办,不用担心,目前新的缓存路径为 ...
- Blazor 中如何下载文件到浏览器
Blazor 中如何下载文件到浏览器 目录 一.前言 二.方法一(导航跳转) 三.方法二(下载后传出) (一) 使用 RestSharp 下载 (二) 使用 BlazorDownloadFile 传出 ...
- nodejs下载及安装(windows)
1.nodejs官网下载node 2.解压缩zip 注:新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载N ...
- 前端中关于下载文件问题
大部分文件下载都是在服务器放置好需要下载的资源,然后由服务器配置可以下载的文件类型,由系统去判断权限.如果文件比较小,不想通过系统去判断权限给出下载地址,如何在前端完成下载功能呢? 只需要将数据准备好 ...
- nodejs下载安装、npm环境配置、yarn下载与环境配置
Windows 安装nodejs.npm.yarn 一.nodejs下载与安装 1. 下载 1.1 打开浏览器搜索nodejs 1.2. 下载nodejs 2. 安装 按照图中指示完成安装即可 至此n ...
- 用python下载文件的若干种方法汇总
压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...
- linux快捷上传下载文件
借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混): ...
最新文章
- ffmpeg 压缩视频
- 匹兹堡计算机科学公司,2017美国匹兹堡大学计算机科学CS专业硕士录取
- Entity Framework 4.1 DbContext使用记之二——如何玩转本地实体? DbSet.Local属性的使用与实现...
- 跨域加了header也解决不了?
- java中BigDecimal的常见用法
- 8 张图,看你是否理解 Java
- 在虚拟机上安装redis集群,redis使用版本为4.0.5,本机通过命令客户端可以连接访问,外部主机一直访问不了...
- day4-mysql数据关系
- 面试思考,入职初期怎么做
- 动态规划--矩阵链乘法
- import keras的错误module ‘tensorflow.compat.v2‘ has no attribute ‘__internal__‘
- 机器学习特征与类型概述
- 从360图书馆抓取全球国家的中文名与英文名(requests_html)
- 睿智的目标检测28——YoloV4当中的Mosaic数据增强方法
- bugku 我永远喜欢穹妹
- onmouseover 和onmousemove的区别
- CharacterUtils 判断中英文,英文大小写
- vim /etc/hostname1输入命令后进入到以下界面。
- SMB交换机、接入交换机、汇聚交换机、核心交换机
- webapi中使用token验证(JWT验证)