bas-concept-file-upload-webclient
Version:
Prova de conceito para API de upload de arquivos para BAS (WebClient)
56 lines (44 loc) • 1.4 kB
JavaScript
const path = require('path');
const fs = require('fs');
const http = require('http');
const APP_HOSTNAME = '127.0.0.1';
const APP_PORT = process.env.PORT || 3000;
function writeResult(res, code, message) {
res.setHeader('Content-Type', 'text/plain');
res.writeHead(code || 500);
res.end(message || 'Internal Server Error');
}
const server = http.createServer((req, res) => {
if (req.method !== 'GET') {
writeResult(res, 400, 'Bad Request!');
return;
}
let filePath = '.' + (
req.url === '/'
? '/index.html'
: req.url);
fs.exists(filePath, (exists) => {
if (!exists) {
writeResult(res, 404, 'Not found');
return;
}
fs.stat(filePath, function (error, stat) {
let readStream;
if (error) {
writeResult(res);
return;
}
if (stat.isDirectory()) {
writeResult(res, 403, 'Forbidden');
return;
}
readStream = fs.createReadStream(filePath);
readStream.on('error', writeResult);
res.writeHead(200);
readStream.pipe(res);
});
});
});
server.listen(APP_PORT, APP_HOSTNAME, () => {
console.log(`Listening on port ${APP_PORT}...`);
})