jcramalho

Servidor node.js com upload de ficheiro

Oct 30th, 2017
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Servidor das Teses
  2. var http = require('http')
  3. var fs = require('fs')
  4. var pug = require('pug')
  5. var formidable = require('formidable')
  6.  
  7. // Compilar a template das páginas numa função
  8. const formTese = pug.compileFile('form-tese2.pug')
  9. const teseRecebida = pug.compileFile('tese-recebida.pug')
  10.  
  11. var myserver = http.createServer(function(req, res){
  12.     if(req.method === "GET") {
  13.         if(req.url === "/registo") {
  14.             res.writeHead(200, {'Content-Type': 'text/html'})
  15.             res.write(formTese())
  16.             res.end()
  17.         }
  18.         else {
  19.             res.writeHead(404, {'Content-Type': 'text/plain'})
  20.             res.end('404 '+req.url+' - Não está disponível!')
  21.         }
  22.     }
  23.     else if (req.method === "POST") {
  24.         if(req.url === "/processaForm") {
  25.             var form = new formidable.IncomingForm()
  26.             form.parse(req, function(err, fields, files){
  27.                 if(!err) {
  28.                     var fenviado = files.ficheiro.path
  29.                     var fnovo = './uploaded/'+files.ficheiro.name
  30.  
  31.                     fs.rename(fenviado, fnovo, function(err){
  32.                         if(!err) {
  33.                             fields.status = "Ficheiro recebido e guardado com sucesso."
  34.                         }
  35.                         else {
  36.                             fields.status = "Ocorreram erros na gravação do ficheiro enviado"
  37.                         }
  38.                     })
  39.  
  40.                     res.writeHead(200, {'Content-Type': 'text/html'})
  41.                     fields.ficheiro = files.ficheiro.name
  42.                     res.write(teseRecebida(fields))
  43.                     console.log(JSON.stringify(fields))
  44.                     console.log(JSON.stringify(files))
  45.                     res.end()
  46.                 }
  47.             })
  48.         }
  49.         else {
  50.             res.writeHead(404, {'Content-Type': 'text/plain'})
  51.             res.end('404 '+req.url+' - Não está disponível!')
  52.         }
  53.     }
  54.     else {
  55.         res.writeHead(404, {'Content-Type': 'text/plain'})
  56.         res.end('404 '+req.method+' - Não é suportado!')
  57.     }
  58. })
  59.  
  60. myserver.listen(3333)
  61. console.log('Servidor à escuta na porta 3333...')
Advertisement
Add Comment
Please, Sign In to add comment