To send file in response with Node.js, we call pipe to pipe a stream.
For instance, we write
const http = require("http");
const fileSystem = require("fs");
const path = require("path");
http
.createServer((request, response) => {
const filePath = path.join(__dirname, "myfile.mp3");
const stat = fileSystem.statSync(filePath);
response.writeHead(200, {
"Content-Type": "audio/mpeg",
"Content-Length": stat.size,
});
const readStream = fileSystem.createReadStream(filePath);
readStream.pipe(response);
})
.listen(2000);
to call createServer with a callback that calls createReadStream to read the file at filePath.
Then we call readStream.pipe with response to pipe the file data as the response.
We call writeHead to write the file metadata as the header.