Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

A sample file upload application on Express. It use busboy as form data parser

_ = require('underscore')
assert = require('assert')
bodyParser = require('body-parser')
express = require('express')
busboy = require('connect-busboy')
path = require 'path'
uuid = require 'node-uuid'
fs = require 'fs'


PORT = 8000

app = express()

mediaPath = path.resolve(__dirname, 'media')

app.use('/static', express.static(__dirname + "/static"))
app.use('/media', express.static(mediaPath))

app.get('/', (request, response) ->
  response.sendFile(__dirname + "/views/index.html")
)

app.use(bodyParser.json())
app.use(busboy())

app.get('/files', (req, res)->
  fs.readdir(mediaPath, (err, files)->
    result = files.map (name)->
      src: "media/#{name}"
    res.json { result }
  )
)
app.post('/upload', (req, res)->
  {busboy} = req
  console.log('here', busboy?)
  if (req.busboy?)
    busboy.on('file', (fieldname, file, filename, encoding, mimetype)->
      name = uuid.v1()
      extension = path.extname(filename)
      saveTo = path.resolve(mediaPath, "#{name}#{extension}")
      console.log(saveTo)
      file.pipe(fs.createWriteStream(saveTo))
    )

    busboy.on('finish', () ->
      res.end("success")
    )
    req.pipe(busboy)
)


app.listen(PORT, ->
  console.log("listen on port #{PORT}")
)
share|improve this question

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.