a 标签实现文件下载


一般文件下载是使用a标签的download属性。在项目开发中,我遇到一种情况:我希望在页面用户输入条件,点击按钮,服务器就会根据条件导出报表。

我的流程是先条件查相关信息,然后组合生成excel。然后再怎么做可以不操作页面直接下载下来呢?

我想了一个办法,先将excel保存再服务器上。然后将地址返回给页面。这时页面再发送一个下载的请求。这是需要触发一个a标签的点击按钮。

所以我使用了以下代码:

var filepath = data.data;//获取返回的文件的路径
var index = filepath.lastIndexOf('/');
var name = filepath.substring(index+1,filepath.length);//解析文件的文件名
var a = document.createElement('a');//页面上创建一个标签
a.setAttribute('href','/export?filepath='+filepath+'&name='+name);//设置a 标签的href,
a.setAttribute('download',name);//设置a 标签的download 属性,并限定下载文件名。
a.click();//出发a点击事件,下载文件

我顺便贴以下Nodejs下载文件的代码:
router.get('/export',function (req, res) {
try {
let filepath = req.query.filepath;
let name = req.query.name;
let stats = fs.statSync(filepath);
res.set({
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename='+name,
'Content-Length': stats.size
});
fs.createReadStream(filepath).pipe(res);
}catch (e){
console.log(e);
}
});


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM