-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
106 lines (88 loc) · 2.06 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
var express = require('express');
var hbs = require('hbs');
var fs = require('fs');
var app = express();
// set the view engine to use handlebars
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser({ keepExtensions: true, uploadDir: "/var/photos" }))
function logerr(err){
if(err){
console.log(err);
}
}
var blocks = {};
hbs.registerHelper('extend', function(name, context) {
var block = blocks[name];
if (!block) {
block = blocks[name] = [];
}
block.push(context(this));
});
hbs.registerHelper('block', function(name) {
var val = (blocks[name] || []).join('\n');
// clear the block
blocks[name] = [];
return val;
});
app.get('/', function(req, res){
res.render('index');
});
app.get('/thanks', function(req, res){
res.render('thanks');
});
app.post('/', function(req, res){
var root = '/var/photos/';
var dir = root + req.body.first + '_' + req.body.last;
try{
fs.stat(dir, function(err, stat){
if(err || !stat.isDirectory()){
logerr(dir + ' does not exist. Creating now.');
fs.mkdirSync(dir);
}
function checkDir(dir, cb){
fs.stat(dir, function(err, stat){
cb(!err && stat.isDirectory());
});
}
function checkFile(file, cb){
fs.stat(file, function(err, stat){
cb(!err && stat.isFile());
})
}
var process = function(file){
var src = file.path;
var dest = dir + '/' + file.name;
checkDir(dir, function(exists){
if(!exists){
fs.mkdirSync(dir);
}
checkFile(dest, function(exists){
if(!exists){
fs.rename(src, dest, logerr);
} else{
fs.unlink(src, logerr);
}
});
});
}
// Single file
if(req.files.field.path !== undefined){
process(req.files.field);
}
else{
// Multiple files.
for(var i in req.files.field){
process(req.files.field[i]);
}
}
});
res.json("OK");
} catch(err){
logerr(err);
res.status(500);
}
});
app.listen(3000);
console.log('Listening on port 3000');