java a标签实现文件下载_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);

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值