Advertisement
Katsushiro

server.js

Nov 15th, 2014
666
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var http = require('http');
  2. var fs = require('fs');
  3. var path = require('path');
  4. var util = require('util');
  5. var formidable = require('formidable');
  6.  
  7. http.createServer(function(req, res) { // request, response
  8.     console.log( 'Req method: ' + req.method + ' , URL: ' + req.url );
  9.  
  10.     //-----------------------//-------------------------------------------------------------------------------------
  11.     //--- UPLOAD handling ---//
  12.     //-----------------------//
  13.     if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
  14.         var form = new formidable.IncomingForm();
  15.  
  16.         form.parse(req, function(err, fields, files) {
  17.             if (err) throw err;
  18.  
  19.             fs.readFile( files.filepath.path, function (err, data) {
  20.                 if (err) throw err;
  21.                
  22.                 var fileName = files.filepath.name;
  23.                 fs.writeFile( __dirname + '/uploadedFiles/' + fileName, data, function (err) {
  24.                     if (err) throw err;
  25.                    
  26.                     //-----------------------------------------------//---------------------------------------------
  27.                     //--- LOAD and APPEND external JSON file with ---//
  28.                     //--- data from request                       ---//
  29.                     //-----------------------------------------------//
  30.                     var jsonObj = require('./storedFilesList.json');
  31.  
  32.                     jsonObj[fileName] = {size:files.filepath.size, expDate:'-', path:__dirname + '/uploadedFiles/' + fileName};
  33.                    
  34.                     var jsonString = JSON.stringify(jsonObj); // convert JSON obj to String
  35.                    
  36.                     fs.writeFile('storedFilesList.json', jsonString, function(err){
  37.                         if (err) throw err;
  38.                         console.log('File ' + fileName + ' was succesfully written to JSON ext file.');
  39.                     });
  40.                    
  41.                     console.log('File ' + fileName + ' was succesfully saved.');
  42.                 });
  43.             });
  44.  
  45.             res.writeHead(200, {'content-type': 'text/plain'});
  46.             res.write('OK');
  47.             res.end( util.inspect({fields: fields, files: files}) );
  48.         });
  49.  
  50.         return;
  51.     }
  52.    
  53.     //-----------------------//-------------------------------------------------------------------------------------
  54.     //--- DELETE handling ---//
  55.     //-----------------------//
  56.     if (req.url == '/delete' && req.method.toLowerCase() == 'post') {
  57.        
  58.         var form = new formidable.IncomingForm();
  59.         form.parse(req, function(err, a, b) {
  60.             if (err) throw err;
  61.             console.log('a: ' + a + ' b: ' + b);
  62.         });
  63.  
  64.  
  65.     }
  66.    
  67.     //---------------------------//---------------------------------------------------------------------------------
  68.     //--- Source code loading ---//
  69.     //---------------------------//
  70.     var filePath = '.' + req.url;
  71.     if (filePath == './')
  72.         filePath = './index.html';
  73.     if (filePath.indexOf('/../') !== -1) {
  74.         res.writeHead(400);
  75.         res.end();
  76.     } else {
  77.         var extname = path.extname(filePath);
  78.         var contentType = 'text/plain';
  79.         switch (extname) {
  80.             case '.js': contentType = 'text/javascript'; break;
  81.             case '.html': contentType = 'text/html'; break;
  82.             case '.css': contentType = 'text/css'; break;
  83.             case '.svg': contentType = 'image/svg+xml'; break;
  84.             case '.json': contentType = 'application/json'; break;
  85.         }
  86.         fs.exists(filePath, function(exists) {
  87.             if (exists) {
  88.                 fs.readFile(filePath, function(error, content) {
  89.                     if (error) {
  90.                         res.writeHead(500);
  91.                         res.end();
  92.                     } else {
  93.                         res.writeHead(200, { 'Content-Type': contentType });
  94.                         res.write(content, 'utf-8');
  95.                         res.end();
  96.                     }
  97.                 });
  98.             } else {
  99.                 res.writeHead(404);
  100.                 res.end();
  101.             }
  102.         });
  103.     }
  104.  
  105. }).listen(8123);
  106.  
  107. console.log('Server running at http://127.0.0.1:8123/');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement