-
Notifications
You must be signed in to change notification settings - Fork 165
/
progress.js
47 lines (42 loc) · 1.47 KB
/
progress.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var http = require('http')
var multiparty = require('../')
var util = require('util')
var PORT = process.env.PORT || 8080
var server = http.createServer(function (req, res) {
if (req.url === '/') {
res.writeHead(200, { 'content-type': 'text/html' })
res.end(
'<form action="/upload" enctype="multipart/form-data" method="post">' +
'<input type="text" name="title"><br>' +
'<input type="file" name="upload" multiple="multiple"><br>' +
'<input type="submit" value="Upload">' +
'</form>'
)
} else if (req.url === '/upload') {
var form = new multiparty.Form()
form.on('progress', function (bytesReceived, bytesExpected) {
if (bytesExpected === null) {
return
}
var percentComplete = (bytesReceived / bytesExpected) * 100
console.log('the form is ' + Math.floor(percentComplete) + '%' + ' complete')
})
form.parse(req, function (err, fields, files) {
if (err) {
res.writeHead(400, { 'content-type': 'text/plain' })
res.end('invalid request: ' + err.message)
return
}
res.writeHead(200, { 'content-type': 'text/plain' })
res.write('received fields:\n\n ' + util.inspect(fields))
res.write('\n\n')
res.end('received files:\n\n ' + util.inspect(files))
})
} else {
res.writeHead(404, { 'content-type': 'text/plain' })
res.end('404')
}
})
server.listen(PORT, function () {
console.info('listening on http://0.0.0.0:' + PORT + '/')
})