Skip to content

Instantly share code, notes, and snippets.

@myjian
Created December 11, 2015 10:31
Show Gist options
  • Save myjian/e8533136c397a0242e54 to your computer and use it in GitHub Desktop.
Save myjian/e8533136c397a0242e54 to your computer and use it in GitHub Desktop.
File Upload using Multer with Express (Node.JS)
var express = require('express');
var multer = require('multer');
var upload = multer({ dest: 'uploads/'});
var PORT = 3000;
var app = express();
var htmlHeader = '<!DOCTYPE html>'
+ '<html lang="en">'
+ '<head>'
+ '<meta charset="utf-8">'
+ '<title>File Upload Example</title>'
+ '</head>'
+ '<body>';
var htmlFooter = '</body></html>';
var tmpHtml = '';
// Credit: Timothy Perez
// http://stackoverflow.com/questions/3883342/add-commas-to-a-number-in-jquery
function commaSeparateNumber(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
app.listen(PORT, function(){
console.log('Listening on port ' + PORT);
});
app.get('/', function(req, res){
var htmlToSend = htmlHeader;
htmlToSend += tmpHtml;
tmpHtml = '';
htmlToSend += '<form method="post" action="/" enctype="multipart/form-data">';
htmlToSend += '<span style="border: 1px solid black">';
htmlToSend += '<input type="file" name="miku">';
htmlToSend += '</span><br>';
htmlToSend += '<button type="submit">Upload</button>';
htmlToSend += '</form>';
htmlToSend += htmlFooter;
res.type('html');
res.send(htmlToSend);
});
app.post('/', upload.single('miku'), function(req, res) {
if (!req.file) {
tmpHtml = '<div style="color: red">file not received</div>';
}
else {
console.log(req.file);
tmpHtml = '<div style="color: green">file received</div>';
tmpHtml += 'Name: ' + req.file.originalname + '<br>';
tmpHtml += 'Size: ' + commaSeparateNumber(req.file.size) + ' Bytes<br>';
}
res.redirect('/');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment