upload-server.js 663 Bytes
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)