📅  最后修改于: 2023-12-03 15:24:43.988000             🧑  作者: Mango
有时候我们需要将js中定义的变量作为文件下载,这时候我们需要将变量转换为文件流,并动态创建下载链接实现文件的下载。
在浏览器中要下载文件,主要是通过创建一个下载链接来实现,这可以通过创建一个新的链接元素并将其添加到文档中来完成。
var data = "这是我的数据";
var blob = new Blob([data], {type: 'text/plain'});
var url = window.URL.createObjectURL(blob);
var link = document.createElement("a");
link.setAttribute("href", url);
link.setAttribute("download", "myData.txt");
document.body.appendChild(link);
link.click();
上述代码中,我们首先将待下载的数据存储在变量data中,然后使用Blob构造函数将其转换为Blob对象,设置其MIME类型为text/plain。接着,我们通过调用window.URL.createObjectURL方法将Blob对象转换为BlobURL,这个URL可以在浏览器中用于后续下载。接下来,我们创建一个新的链接元素,并定义其下载属性为myData.txt并将BlobURL设置为其href属性。最后,我们将这个链接元素添加到文档中,并模拟用户点击链接完成下载。
在Node.js中,将变量转换为下载文件需要使用Node.js内置模块fs。
const fs = require('fs');
var data = "这是我的数据";
fs.writeFileSync('myData.txt', data, {encoding: 'utf8'});
var file = `${__dirname}/myData.txt`;
res.download(file);
上述代码中,我们首先将待下载的数据存储在变量data中,然后使用fs的writeFileSync方法将其写入到指定文件myData.txt中。接着,我们将这个文件作为响应的内容使用res.download方法下载。