Skip to content

Instantly share code, notes, and snippets.

Created June 6, 2013 16:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/5722884 to your computer and use it in GitHub Desktop.
Save anonymous/5722884 to your computer and use it in GitHub Desktop.
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/photo_app');
var schema = new mongoose.Schema({
name: String,
path: String
});
var Photo = mongoose.model('Photo', schema);
// 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({uploadDir:'./uploads'}));
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());
}
var path = require('path');
var fs = require('fs');
var join = path.join;
var submit = function (dir) {
return function(req, res, next){
var img = req.filez.photo.image;
var name = req.body.photo.name || img.name;
var path = join(dir, img.name);
console.log(req.files.photo, req.body.photo);
fs.rename(img.path, path, function(err){
if (err)
return next(err);
Photo.create({
name: name,
path: img.name
}, function (err) {
if (err)
return next(err);
res.redirect('/');
});
});
};
};
app.get('/', routes.index);
app.get('/users', user.list);
app.post('/foobar', submit('./'));
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
extends layout
block content
h1= title
p Welcome to #{title}
| <form method='post' enctype='multipart/form-data' action="/foobar">
| <input type='text' name='photo[name]'/>
| <input type='file' name='photo[image]'/>
| <input type='submit' value='Upload'/>
| </form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment