Advertisement
quytm2239

Server

Sep 5th, 2017
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require("express");
  2. var app = express();
  3. var server = require("http").createServer(app);
  4. var io = require("socket.io").listen(server);
  5. var morgan = require('morgan');
  6.  
  7. var mysql = require("mysql");
  8. var http = require('http');
  9. var fs = require('fs');
  10. var bodyParser = require('body-parser');
  11.  
  12. var busboy = require('busboy');
  13. var inspect = require('util').inspect;
  14.  
  15. // setup parser for request body content
  16. app.use(bodyParser.urlencoded({
  17.     extended: false
  18. }));
  19. app.use(bodyParser.json());
  20.  
  21. // use morgan to log requests to the console
  22. app.use(morgan('dev'));
  23.  
  24. var PORT = 8099;
  25.  
  26. var connectSQL = mysql.createConnection({
  27.     host : 'localhost',
  28.     user: 'root',
  29.     pass : '',
  30.     database : 'demologinandroid'
  31. });
  32.  
  33. connectSQL.connect(function(error){
  34.     if (error){
  35.         console.log('Connect database Error');
  36.     }else {
  37.         console.log('Connect database Success');
  38.     }
  39. });
  40.  
  41. app.set('views',__dirname + '/views');
  42. app.set('view engine', 'ejs');
  43. app.engine('html', require('ejs').renderFile);
  44.  
  45. app.use(express.static(__dirname + '/upload')); // set this as static dir to access directly all child folder n file inside
  46. app.set('upload_dir',__dirname + '/upload'); // set this value to key upload_dir
  47.  
  48. io.sockets.on('connection', function(socket){
  49.     console.log("Mobile connected");
  50.  
  51.     socket.on("CLIENT_REGISTER", function(data){
  52.         var value = JSON.parse(data);
  53.         var email = value.email;
  54.         var pass = value.pass;
  55.  
  56.         connectSQL.query("INSERT INTO account VALUE( '" + email + "','" + pass + "')", function(error, rows, fields){
  57.             if (error){
  58.                 io.emit("CLIENT_REGISTER", "Tai khoan da ton tai");
  59.             }else{
  60.                 io.emit("CLIENT_REGISTER", "Dang ky thanh cong!");
  61.             }
  62.         });
  63.  
  64.         console.log("email: " + email + " pass: "  + pass);
  65.     });
  66.  
  67.     socket.on("CLIENT_GET_PRODUCT", function(data){
  68.         var name = data.toString();
  69.         console.log("Client request get product");
  70.         connectSQL.query("SELECT * FROM sanpham WHERE name = '" + name + "'",
  71.         //connectSQL.query("SELECT * FROM sanpham",
  72.                 function(error, rows, fields){
  73.                 if (error){
  74.                     io.emit("CLIENT_GET_PRODUCT", "Truy van that bai");
  75.                     console.log("Server respone error get product");
  76.                 }else{
  77.                 console.log("Server respone success get product")
  78.                 fs.readFile(rows[0].Link, function(error, data){
  79.                     if (!error){
  80.                         respone = {
  81.                             ID : rows[0].ID,
  82.                             Name : rows[0].Name,
  83.                             Link : data
  84.                         }
  85.                         console.log(data);
  86.                         console.log("Server respone info product")
  87.                         console.log(respone);
  88.                         io.emit("CLIENT_GET_PRODUCT", respone);
  89.                     }else{
  90.                         console.log("doc file that bai");
  91.                     }
  92.                 });
  93.             }
  94.         });
  95.     });
  96.  
  97. });
  98.  
  99. server.listen(8099,function () {
  100.     console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
  101. });
  102.  
  103. // Routing
  104.  
  105. app.get("/", function(req, res){
  106.  
  107.     res.writeHead(200, {'Content-Type': 'text/html'});
  108.     res.write('<form action="upload" method="post" enctype="multipart/form-data">');
  109.     res.write('Id<input type="text" name="id"><br>');
  110.     res.write('Name<input type="text" name="name"><br>');
  111.     res.write('<input type="file" name="filetoupload"><br>');
  112.     res.write('<input type="submit">');
  113.     res.write('</form>');
  114.  
  115.     return res.end();
  116. });
  117.  
  118. var baseImgUrl = 'http://localhost' + ':' + PORT + '/';
  119.  
  120. app.post('/upload', function(req, res) {
  121.     // BUSBOY ============>>>>>>>>>>>>>
  122.     // load module
  123.     console.log(req.body);
  124.     var path = require('path');
  125.     var Busboy = require('busboy');
  126.     var fs = require('fs');
  127.  
  128.     var full_path = app.get('upload_dir');
  129.  
  130.     var busboy = new Busboy({ headers: req.headers });
  131.     var saveTo = '';
  132.     var img_url = '';
  133.     var files = [];
  134.     var fstream;
  135.  
  136.     busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
  137.         //console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);
  138.         var newFilename = new Date().getTime();
  139.         newFilename = newFilename + '.' + filename.split('.')[1];
  140.         saveTo = path.join(full_path, path.basename(newFilename));
  141.         //console.log(saveTo);
  142.         var img_url = baseImgUrl + newFilename;
  143.         files.push(img_url);
  144.  
  145.         fstream = fs.createWriteStream(saveTo);
  146.         file.pipe(fstream);
  147.         // fstream.on('close', function(){
  148.         //  console.log('file ' + filename + ' uploaded');
  149.         //  files.push(baseImgUrl + account_id + '/avatar/' + filename);
  150.         // });
  151.  
  152.     });
  153.  
  154.     var responeObj = {};
  155.  
  156.     // get key-value of multipart-form
  157.     busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
  158.         console.log('Field [' + fieldname + ']: value: ' + inspect(val));
  159.         responeObj[fieldname] = inspect(val);
  160.     });
  161.  
  162.     busboy.on('finish', function() {
  163.         // update to database
  164.         // res.status(200).send(files);
  165.         // console.log(responeObj);
  166.         // responeObj['image'] = files[0];
  167.         // res.status(200).send(responeObj);
  168.  
  169.         // connectSQL.query("INSERT INTO sanpham VALUE ( '" + responeObj.id + "','" + responeObj.name + "','" + files[0] + "')",
  170.         //  function(error, rows, fileds){
  171.         //      if (error){
  172.         //          console.log("Error");
  173.         //          res.status(500).send(error);
  174.         //      }else{
  175.         //          console.log(files);
  176.         //          var respone = {
  177.         //              id:req.body.id,
  178.         //              name:req.body.name,
  179.         //              image:files[0]
  180.         //          };
  181.         //          res.status(200).send(respone);
  182.         //      }
  183.         //  });
  184.  
  185.         connectSQL.query({
  186.             sql: 'INSERT INTO sanpham VALUE (?,?,?)',
  187.             timeout: 1000, // 1s
  188.             values:[responeObj.id,responeObj.name,files[0]]
  189.         }, function (error, results, fields) {
  190.             connection.release();
  191.             if (error) {
  192.                 res.status(500).send('Internal Error');
  193.             } else {
  194.                 responeObj['image'] = files[0];
  195.                 console.log(responeObj);
  196.                 res.status(200).send(responeObj);
  197.             }
  198.         });
  199.     });
  200.     // PROCESS
  201.     req.pipe(busboy);
  202. });
  203.  
  204.  
  205. app.post("/fileupload", function(req, res){
  206.  
  207.     var form = new formidable.IncomingForm();
  208.  
  209.     form.parse(req, function (err, getInput, fileImage) {
  210.         var oldname = fileImage.filetoupload.name;
  211.         var newName = getInput.name + '.png';
  212.  
  213.         var oldpath = fileImage.filetoupload.path;
  214.         var newpath = 'C:/Users/admin/Desktop/NODEJS/ServerAndroid2/images/'
  215.         + newName;
  216.  
  217.         respone = {
  218.             id:getInput.id,
  219.             name:getInput.name,
  220.             image:newpath
  221.         };
  222.  
  223.         fs.rename(oldpath, newpath, function (err) {
  224.             if (err) throw err;
  225.  
  226.             connectSQL.query("INSERT INTO sanpham VALUE ( '" + getInput.id + "','" + getInput.name + "','" + newpath + "')",
  227.                 function(error, rows, fileds){
  228.                     if (error){
  229.                         console.log("Loi");
  230.                     }else{
  231.                         console.log("Thanh cong");
  232.                         console.log(respone);
  233.                     }
  234.                 });
  235.  
  236.             res.end(JSON.stringify(respone));
  237.         });
  238.     });
  239. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement