NodeJS Express3 File Upload
Simple Style
This example is only bodyparser, no additional middleware.(No multiparty, multur)
Steps
- Receive file and save /tmp
- Move current application directory
app.js
var express = require('express') , routes = require('./routes') , http = require('http') , path = require('path') , fs = require('fs') var app = express(); var done = false; // all environments app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } app.get('/', routes.index); app.post('/upload', function(req, res){ console.log(req.files); // file list and attrs if (req.files.fileupload) { var tmp_path = req.files.fileupload.path; var target_path = './uploads/' + req.files.fileupload.name; fs.rename(tmp_path, target_path, function(err) { if (err) { throw err; } fs.unlink(tmp_path, function() { if (err) { throw err; } res.send('File uploaded to: ' + target_path + ' - ' + req.files.fileupload.size + ' bytes'); }); }); } else { console.lot('file is not correctly'); res.redirect('/'); } }); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });
index.jade
extends layout block content h1= title p File Upload form(method="post", enctype="multipart/form-data", action="/upload") input(type="file", name="fileupload") input(type="submit")