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}")
)