静态文件与流式 node.js

时间:2021-08-01 17:25:58

标签: node.js express fs multer

从服务器发送大文件(如“音频”文件、流的静态文件)有什么更好的方法? 我正在使用 node.js 和 express.js 实现音频播放器 API,但我正在寻找更好的性能。

我可以像这样使用 express 发送音频:

app.use('/uploads', express.static(path.join(__dirname, '../', 'uploads')));

或者使用 fs 流,例如:

export async function streamAudio(req: Request, res: Response, next: NextFunction) {
    try {
        const filePath: string = req.params.fileName;

        const actualPath = path.join(__dirname, "/../../../", filePath);
        console.log(actualPath);

        const state = fs.statSync(actualPath);
        res.writeHead(200, {
            "Content-Type": "audio/mpeg",
            "Content-Length": state.size,
        });

        const readStream = fs.createReadStream(actualPath);

        readStream.pipe(res);
    } catch (err) {
        next(err);
    }
}

我还有一个问题,如何使音频无法下载?所以我可以制作一个下载端点选项来跟踪下载。

0 个答案:

没有答案