Skip to content

Instantly share code, notes, and snippets.

@sylvesterdas
Last active October 31, 2021 11:21
Show Gist options
  • Save sylvesterdas/1301cb3f54a146519d9e5217fef30076 to your computer and use it in GitHub Desktop.
Save sylvesterdas/1301cb3f54a146519d9e5217fef30076 to your computer and use it in GitHub Desktop.
Proper way to serve a file over http | Node JS
const fs = require("fs");
const path = require("path");
const stream = require("stream");
const http = require("http");
const mime = require("mime-types");
const PORT = process.env.PORT || 3000;
const filePath = path.resolve("./intro.mov");
const fileName = path.parse(filePath).base;
const fileSize = fs.statSync(filePath).size;
const mimeType = mime.lookup(filePath);
const server = http.createServer((req, res) => {
res.setHeader("Content-Disposition", "attachment;filename=" + fileName);
res.setHeader("Content-Type", mimeType);
res.setHeader("Content-Length", fileSize);
stream.pipeline(fs.createReadStream(filePath), res, (err) => {
if (err) console.error(err);
});
});
server.listen(PORT, () => console.log('Listening to port', PORT));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment