Reputation: 15
I use this code :
/*
* dependencies
* */
var datetime = require('node-datetime'),
express = require('express'),
http = require('http'),
upload = require('jfum');
// configuration
var dirs = require('./config').directors;
// varibles
var client = 'http://localhost';
// express setup
var app = express();
// Add headers
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', client);
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-CSRF-Token,X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.use('/upload', function(req, res, next) {
var date = datetime.create(),
patch = date.format('/Y/m/d/') + req.sessionID;
upload.fileHandler({
tmpDir: dirs.temp,
uploadDir: __dirname + dirs.location + patch,
uploadUrl: dirs.location_url + patch,
maxPostSize: 11000000000, // 11 GB
minFileSize: 1,
maxFileSize: 10000000000, // 10 GB
acceptFileTypes: /\.(gif|jpe?g|png)$/i,
accessControl: {
allowOrigin: client,
allowMethods: 'OPTIONS, HEAD, GET, POST, PUT, DELETE'
}
})(req, res, next);
});
// bind event
upload.on('end', function(fileInfo) {
// insert file info
console.log("files upload complete");
console.log(fileInfo);
// var exec = require('child_process').exec;
// var command;
//
// command = exec('ipconfig4', function(error, stdout, stderr) {
// console.log('stdout: ' + stdout);
// console.log('stderr: ' + stderr);
// if (error !== null) {
// console.log('exec error: ' + error);
// }
// });
});
upload.on('delete', function(fileName) {
// remove file info
console.log("files remove complete");
console.log(fileName);
});
upload.on('error', function(e) {
console.log(e.message);
});
// Configuration
app.configure(function() {
app.set('port', process.env.PORT || 3001);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('token'));
app.use(express.session({
secret: 'secret'
}));
app.use(express.favicon());
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function() {
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
app.set('view cache', false);
});
app.configure('production', function() {
app.use(express.errorHandler());
app.set('view cache', true);
});
/*
* routes
* */
app.get('/', function(req, res) {
res.send(req.sessionID);
});
/*
* start server
* */
http.createServer(app).listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
console.log("access url /location/input");
});
In routes it seems I can get something like php's session_id() with req.sessionID. But in
app.use('/upload', function(req, res, next) {
var date = datetime.create(),
patch = date.format('/Y/m/d/') + req.sessionID;
});
I get undefined
from req.sessionID
. Why? Does this work like php's session_id()
?
Upvotes: 1
Views: 465
Reputation: 2918
Express out of the box does not have a sessionID
variable. You need to use a middleware like https://github.com/expressjs/session which will provide you req.sessionID
. See https://github.com/expressjs/session#reqsessionid-1 for more details.
Upvotes: 1
Reputation: 410
Node webserver development works in middlewares. What you need to do is find the appropriate session middleware, and input it to your middleware stack, before where you call req.sessionID().
Upvotes: 0