关于从node本地下载指定文件到前端

需求如下:

  1. 前端选择文件名向node传参
  2. 先通过post请求(加token)向Java后台下载数据到node并保存(此时的文件格式为zip)
  3. 从node将下载好的文件发送给前端,实现前端下载

问题如下:

现在已经实现了1和2,尝试实现3的时候,有参考res.dowload(),其中download的参数中配置的'./public/资源名.后缀'不太明白这个相对路径是相对谁,虽然参考例子中模拟a标签下载资源,但是还是每太明白个中逻辑,还请大大们不吝赐教orz

代码如下:

var express = require('express');
router.get("/xxx", function(req, res){
    res.download("public/xx资源名.xx后缀名");
});

第三点需求就是要实现前端chrome可以调出自带的下载器下载文件到client本地最好能通过pipe实现一步实时下载,而不是先完成传输再开始前端下载。主要是不太理解怎么通过download实现这一步

表述可能有点问题,请大佬们多多担待orz。。。

阅读 3.1k
2 个回答

download是用来下载本地文件的
你这种就直接将跟java的流与你的相应流串起来就好了

目前解决方案是
1.在post请求完,在node本地下载好文件后,返回给前端路径和文件名,
2.由前端拼接成get请求链接后,模拟a标签点击,实现下载
3.node端接收get请求执行下载
其中模拟a标签点击关键代码如下:

path = file+'?dir='+response.data.dir+'&name='+response.data.fileName;  
console.log(path) 
let a = document.createElement('a');
a.href = path;
a.download = response.data.fileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题