Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const fs = require('fs');
  2.  
  3. const http = require('http');
  4. const url = require('url');
  5.  
  6. const readFile = (path, opts = 'utf8') =>
  7.     new Promise((res, rej) => {
  8.         fs.readFile(path, opts, (err, data) => {
  9.             if (err) rej(err)
  10.             else res(data)
  11.         })
  12.     })
  13.  
  14. const writeFile = (path, data, opts = 'utf8') =>
  15.     new Promise((res, rej) => {
  16.         fs.writeFile(path, data, opts, (err) => {
  17.             if (err) rej(err)
  18.             else res()
  19.         })
  20.     })
  21.  
  22. http.createServer((request, response) => {
  23.   /*
  24.       ,,request''  - strumień wejściowy - zawiera dane otrzymane od przeglądarki, np. zakodowaną zawartość pól formularza HTML
  25.       ,,response'' - strumień wyjściowy - umieszcza się w nim dane, które chcemy odesłać przeglądarce.
  26.         Odpowiedź, wysyłana za pomocą tego strumienia, musi się składać z dwóch części: nagłówka oraz ciała.
  27.         W nagłówku umieszcza się, m.in., informację o typie (MIME) danych  zawartych w ciele.
  28.         W ciele umieszcza się właściwe dane, np. definicję formularza.
  29.     */
  30.   console.log('--------------------------------------');
  31.   console.log(`Względny adres URL bieżącego żądania: ${request.url}\n`);
  32.   const urlParts = url.parse(request.url, true);
  33.   let name = urlParts.query.name;
  34.   let email =urlParts.query.email;
  35.   let cont = urlParts.query.content;
  36.   if (urlParts.pathname === '/submit') {
  37.     const path = urlParts.query.path;
  38.     response.writeHead(200, { 'Content-Type': 'text/HTML; charset=utf-8' });
  39.     response.write('\n');
  40.     // fs.appendFileSync(__dirname.concat('/db'),name.concat("<br>").concat(email).concat("<br>").concat(cont).concat("<br>"));
  41.     fs.appendFile(__dirname.concat('/db'), name.concat("<br>").concat(email).concat("<br>").concat(cont).concat("<br>"), function (err) {
  42.       if (err) throw err;
  43.       console.log('Saved!');
  44.     });
  45.     response.write(fs.readFileSync(__dirname.concat("/db")).toString());
  46.     response.write('<form method="GET" action="/submit">');
  47.     response.write('<label for="name">Name</label>');
  48.     response.write('<input name="name">');
  49.     response.write('<label for="email">Email</label>');
  50.     response.write('<input name="email">');
  51.     response.write('<label for="content">Content</label>');
  52.     response.write('<input name="content">');
  53.     response.write('<br>');
  54.     response.write('<input type="submit">');
  55.     response.write('<input type="reset">');
  56.     response.write('</form>');
  57.     console.log('Wysyłanie odpowiedzi');
  58.   } else { // Generowanie formularza
  59.     console.log('Tworzenie nagłówka odpowiedzi');
  60.     response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  61.     console.log('Tworzenie ciała odpowiedzi')
  62.     response.write('\n');
  63.     const contents = fs.readFileSync(__dirname.concat("/db")).toString();
  64.     response.write(contents);
  65.     response.write('<form method="GET" action="/submit">');
  66.     response.write('<label for="name">Name</label>');
  67.     response.write('<input name="name">');
  68.     response.write('<label for="email">Email</label>');
  69.     response.write('<input name="email">');
  70.     response.write('<label for="content">Content</label>');
  71.     response.write('<input name="content">');
  72.     response.write('<br>');
  73.     response.write('<input type="submit">');
  74.     response.write('<input type="reset">');
  75.     response.write('</form>');
  76.     response.end();
  77.     console.log('Wysyłanie odpowiedzi');
  78.   }
  79. }).listen(8080);
  80. console.log('Uruchomiono serwer na porcie 8080');
  81. console.log("Aby zakończyć działanie serwera, naciśnij 'CTRL+C'");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement