Node文件下载

357 阅读1分钟

本文主要搭建一个简单的Node服务给浏览器下载文件。

下载文件需要用到一个关键的响应头字段Content-Disposition,将这个字段设置为attachement告诉浏览器这个请求是用于下载文件的,且可以设置下载的文件名称,比如设置Content-Disposition: attachement; filename=666.js,则下载的文件的名称为666.js

服务端相关代码如下:

const http = require('http');
// 可以用于查看文件的mime值
const mime = require('mime');
const path = require('path');
const fs = require('fs');

const server = http.createServer((req, res) => {
    const filepath = path.resolve(__dirname, './client.js');
    fs.stat(filepath, (err, stat) => {
        const stream = fs.createReadStream(filepath);
        res.setHeader('Content-Type', mime.getType(filepath));
        res.setHeader('Content-Length', stat.size);
        res.setHeader('Content-Disposition', 'attachment; filename=666.js');
        res.writeHead(200);
        stream.pipe(res);
    });
});

server.listen(8111, () => {
    console.log('Server is listen at 8111');
});

客户端相关代码如下:

<body>
    <a href="http://127.0.0.1:8111">download</a>
</body>

点击download将会下载一个名为666.js的文件。