Всем доброе утро!=)
Пытаюсь разобраться со streamами в NodeJS, но к сожалению не все так просто как хотелось бы. Сперва код:
'use strict';
let url = require('url');
let fs = require('fs');
let path = require('path');
require('http').createServer(function(req, res) {
let pathname = decodeURI(url.parse(req.url).pathname);
switch(req.method) {
case 'POST' :
let fileName = path.basename(pathname);
fs.access('./files/' + fileName, (err) => {
if(err) {
let fileSize = 0;
let stream = fs.createWriteStream('./files/' + fileName);
req.on('error', (err) => {
console.log('err');
res.statusCode = 500;
res.end();
});
req.on('readable', () => {
let chunk = req.read();
if(chunk != null) {
fileSize += chunk.length;
if(fileSize > 1048576) {
stream.end();
res.statusCode = 413;
res.end();
}
stream.write(chunk);
}
});
req.on('end', () => {
stream.end();
res.statusCode = 200;
res.end('Ok');
});
} else {
res.statusCode = 409;
res.end();
}
});
break;
default:
res.statusCode = 502;
res.end("Not implemented");
}
}).listen(3000);
Если файл(request stream) превышает размер 1мб, то я пытаюсь закончить запись в stream(файл) и выдать 413 код ошибки. Но все падает, значит что то не так делаю.
Подскажите, что не так?)