共计 731 个字符,预计需要花费 2 分钟才能阅读完成。
使用 js 生成及下载浏览器端的文件 -Eric
前言
之前写了一篇文章一次下载多个文件的解决方案中写了如何下载服务器端的文件(支持连续下载多个),今天和大家分享下如何在浏览器端生成文件并下载。
场景
如果线上经常出现一些偶发性问题,本地又不好排查,我们只好添加一些追踪日志,当出现问题的时候我们能根据日志进行排查。
解决方案
首先我们先明确一点,IE 浏览器不支持直接下载文件(禁用了反向和正向缓存),我们需要使用另存为功能,google 浏览器我们可以直接下载。如果是为了记录日志,我们一般选择 txt 文件或者 html 文件(可以加样式,排版)。
代码
const downloadErrorLog = (fileName, content) => {
// IE
if(!!window.ActiveXObject || “ActiveXObject” in window) {
var winname = window.open(”, ‘_blank’);
winname.document.open(‘text/html’, ‘replace’);
winname.document.writeln(content);// 如果是 jsx 代码,记得转化为 html
winname.document.execCommand(‘saveas’,”, fileName);
winname.close();
}else{
let aLink = document.createElement(‘a’);
aLink.download = fileName;
aLink.href = “data:text/plain,” + content; // 切记,content 只能是字符串,如果是 html 元素,记得使用.innerHTML 转换
aLink.click();
}
}