var os = require('os');
var express = require('express');
const app = express();
var path = require('path')
var fs = require('fs')
var xssEscape = require('xss-escape');
const multer = require('multer');
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, os.tmpdir())
},
filename: function(req, file, cb) {
var originalname = xssEscape(file.originalname);
cb(null, originalname)
}
})
const upload = multer({
storage: storage
});
app.post('/upload', upload.single('file'), function(req, res) {
const title = req.body.title;
const file = req.file;
console.log(title);
console.log(file);
console.log(file.originalname);
res.send("Ok");
});
app.get('/list', function(req, res) {
var files = fs.readdirSync(os.tmpdir(), {
withFileTypes: true
})
.filter(item => !item.isDirectory())
.map(item => item.name)
res.json({"files":files});
});
app.listen(process.env.PORT || 5000, () => {
console.log(`Server started...`);
});
{
"name": "workspace",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.1",
"multer": "^1.4.5-lts.1",
"xss-escape": "0.0.6"
}
}
https://www.twilio.com/blog/handle-file-uploads-node-express