node(express)实现文件的下载

2018年11月29日Web后端

每次都在使用a标签的download属性来下载文件,突然想,如果要借助服务端又如何主动请求文件的下载呢?

一、纯前端方式

只要给对了路径,就可以完全脱离后端,使用a标签的download属性下载。

二、服务端配合

这儿使用express来做服务端,用express不用node主要是因为省去路由配置的问题,只关注于下载方面。

app.get('/test', (req, res) => {
    res.set({
        "Content-Type":"application/octet-stream", //告诉浏览器这是一个二进制文件
        "Content-Disposition":"attachment; filename=1.txt"//告诉浏览器这是一个需要下载的文件
    });
    fs.createReadStream('./public/file/test.txt').pipe(res);
});

输入http://127.0.0.1:端口/test就可以下载了。