Last active
February 18, 2018 19:43
-
-
Save myf9000/109200069bebacfc3b4f1a7be65bdbc9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
var formidable = require('formidable'); | |
/* | |
ogólnie fajnie byłoby użyć es5/es6 i np zamiast var używać const i let | |
i import mógłby wyglądać tak | |
import fs from 'fs'; | |
i fs możesz używać normalnie jak z require | |
nie lubie tego zapisu export.cos dużo lepiej używać module.exports (bardziej node way) poczytaj czemu | |
do definicji funkcji fajnie użyć fat arrow function (to się sprawdza w programowaniu funkcyjnym, | |
ale w obiektowym trzeba uwazac bo traci się referencje do this) | |
const upload = (req, res) => { | |
... | |
} | |
const innaFunkcja = () => console.log('lol') | |
module.exports = { | |
upload, | |
innaFunkcja, | |
} | |
potem z tego pliku jak chcesz uzyc tych funkcji upload gdzies indziej to robisz | |
import { upload } from './ten_plik' | |
*/ | |
exports.upload = function(request, response) { | |
console.log("Rozpoczynam obsługę żadania upload"); | |
var form = new formidable.IncomingForm(); | |
/* | |
to jest funkcja asynchroniczna czyli nie wiadomo kiedy się wykona | |
nie masz tu w ogóle obsługi błędów co jeśli zamiast html bedzie error bo np. plik się nie wczyta? | |
trzeba to inaczej rozwiazać - tu masz połowicznie zrobiony callback | |
możesz to na 3 sposoby rozwiazac poprawnie zrobiony callback, promise, albo async/await | |
dla tego przykładu użyje promisa | |
fs.readFile('templates/upload.html') | |
.then(html => { | |
response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"}); | |
response.write(html); | |
... | |
}) | |
.catch(console.log) // tu obsluga bledu | |
teraz pytanie co z form? | |
imo powinno być to w miejscu tych 3 kropek powyzej - tylko zapisane w postaci promisa | |
form.parse(request) | |
.then(response => { | |
const { _, files } = response; // destructing object | |
fs.renameSync(files.upload.path, "test.png"); // to nie powinno byc synchroniczne! - tylko async czyli kolejny | |
promise - na razie tak zostaw potem poprawimy bo nam się z tego zrobi niezła choinka | |
response.write("received image:<br/>"); | |
response.write("<img src='/show' />"); | |
response.end(); | |
}) | |
*/ | |
form.parse(request, function(error, fields, files) { | |
fs.renameSync(files.upload.path, "test.png"); | |
response.writeHead(200, {"Content-Type": "text/html"}); | |
response.write("received image:<br/>"); | |
response.write("<img src='/show' />"); | |
response.end(); | |
}); | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment