Tramite Node.js possiamo organizzare i nostri upload in directory.
Con npm dobbiamo installare i seguenti moduli:
- express per gestire la nostra applicazione
- multer per gestire l'upload dei file
- mkdirp per creare ricorsivamente le directory
- bodyparser per gestire l'input da form e l'output.
Quindi possiamo scrivere il seguente codice:
var express = require('express');
var multer = require('multer');
var mkdirp = require('mkdirp');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/api/upload', function(req, res) {
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1;
var path = 'uploads/' + year + '/' + month; // es. uploads/2016/1
mkdirp(path, function(err) { // Crea la nuova directory o usa quella già esistente
if(!err) {
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, path); // La destinazione è il percorso della nuova directory
},
filename: function (req, file, cb) {
cb(null, file.originalname); // Mantiene il nome del file originale
}
});
var upload = multer({ storage: storage }).single('file');
// file è il valore dell'attributo name del campo file
upload(req, res, function(err) {
if(!err) {
res.json({uploaded: true});
}
});
}
});
});