hw4: ex4 passes tests

This commit is contained in:
Claudio Maggioni (maggicl) 2019-10-12 14:59:32 +02:00
parent ceccf9ff43
commit 50d194ac2d

View file

@ -1,9 +1,10 @@
#!/usr/bin/env node #!/usr/bin/env node
// vim: set ts=2 sw=2 et tw=80: // vim: set ts=2 sw=2 et tw=80:
const http = require('http'); const http = require('http');
const url = require('url'); const url = require('url');
const fs = require('fs'); const fs = require('fs');
const formidable = require('formidable');
const routes = Object.create(null); const routes = Object.create(null);
@ -130,6 +131,52 @@ routes['file'] = (req, res) => {
}); });
} }
routes['upload'] = (req, res) => {
if (req.method != 'GET' && req.method != 'POST') {
error(res, 405, 'Use this URL with only GET or POST requests');
return;
}
if (req.method == 'POST') {
const form = new formidable.IncomingForm();
form.uploadDir = __dirname + '/NodeStaticFiles';
form.keepExtensions = true;
form.parse(req);
form.on('fileBegin', (name, file) => {
file.path = file.path.substring(0, file.path.lastIndexOf('/') + 1);
file.path += file.name;
});
form.on('end', () => {
res.writeHead(302, { 'Location': '/explore' });
res.end();
});
return;
}
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Upload</title>
</head>
<body>
<h1>Upload</h1>
<form id="upload-form" enctype="multipart/form-data" method="post">
<label for="file">File:</label>
<input type="file" name="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>`);
};
routes['stats'] = (req, res) => {
res.end()
};
// Main server handler // Main server handler
function onRequest(req, res) { function onRequest(req, res) {