const fs = require('fs') const http = require('http') const path = require('path') http.createServer((req, res) => { const filePath = path.join('files', req.url) if (req.method === 'POST') { // A POST request uploads a file. // On a POST request, `req` is a readable stream. req.pipe(fs.createWriteStream(filePath)) // Send an empty response when the pipe finishes .on('finish', () => res.end()) } else { // A GET request retrieves a file const readStream = fs.createReadStream(filePath) readStream.on('error', _ => { res.write('File not found') res.end() }) readStream.pipe(res) } }).listen(80)