Code files

This commit is contained in:
Akhil
2017-07-31 11:33:31 +05:30
parent 073a63ebdd
commit b9ae409ec0
801 changed files with 17535 additions and 0 deletions
@@ -0,0 +1,17 @@
{
"name": "uploading-a-file",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"keywords": [],
"author": "David Mark Clements",
"license": "MIT",
"dependencies": {
"multipart-read-stream": "^3.0.0",
"pump": "^1.0.1"
}
}
@@ -0,0 +1,5 @@
<form method="POST" enctype="multipart/form-data">
<input type="file" name="userfile1"><br>
<input type="file" name="userfile2"><br>
<input type="submit">
</form>
@@ -0,0 +1,59 @@
'use strict'
const http = require('http')
const fs = require('fs')
const path = require('path')
const mrs = require('multipart-read-stream')
const pump = require('pump')
const form = fs.readFileSync(path.join(__dirname, 'public', 'form.html'))
http.createServer((req, res) => {
if (req.method === 'GET') {
get(res)
return
}
if (req.method === 'POST') {
post(req, res)
return
}
reject(405, 'Method Not Allowed', res)
}).listen(8080)
function get (res) {
res.writeHead(200, {'Content-Type': 'text/html'})
res.end(form)
}
function reject (code, msg, res) {
res.statusCode = code
res.end(msg)
}
function post (req, res) {
if (!/multipart\/form-data/.test(req.headers['content-type'])) {
reject(415, 'Unsupported Media Type', res)
return
}
console.log('parsing multipart data')
const parser = mrs(req.headers, part)
var total = 0
pump(req, parser)
function part (field, file, name) {
if (!name) {
file.resume()
return
}
total += 1
const filename = `${field}-${Date.now()}-${name}`
const dest = fs.createWriteStream(path.join(__dirname, 'uploads', filename))
pump(file, dest, (err) => {
total -= 1
res.write(err
? `Error saving ${name}!\n`
: `${name} successfully saved!\n`
)
if (total === 0) res.end('All files processed!')
})
}
}