Sto provando a caricare un file da un modulo HTML usando Express.js e Multer. Sono riuscito a salvare il file nella posizione desiderata (una cartella denominata caricamenti).Rinominare un file caricato usando Multer non funziona (Express.js)
Tuttavia, mi piacerebbe rinominare il file durante il caricamento, perché, per impostazione predefinita, Multer dà un nome strano come ad esempio:
5257ee6b035926ca99923297c224a1bb
potrebbe essere una marca temporale esadecimale o così, ma ho bisogno di un nome più esplicito per poter richiamare uno script in seguito.
Ho seguito la spiegazione trovata here ma non fa nulla di più del solito: caricare il file con il nome hexa.
Inoltre, i due eventi onFileUploadStart e onFileUploadComplete non sembrano mai essere attivato come io non vengo nulla collegato mia console.
Sto usando due file separati per il server e il percorso:
app.js
/**
* Dependencies
*/
var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
/**
* Importation of routes
*/
var routes = require('./routes/index');
var recog = require('./routes/recog');
/**
* Express
*/
var app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// pour contrer les erreurs de cross domain
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', '*');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
/**
* Routes
*/
app.use('/', routes);
app.use('/recog', recog);
module.exports = app;
recog.js
/**
* Requirements
*/
var express = require('express');
var router = express.Router();
var multer = require('multer');
var uploads = multer({
dest: 'uploads/',
rename: function (fieldname, filename) {
console.log("Rename...");
return filename + Date.now();
},
onFileUploadStart: function() {
console.log("Upload is starting...");
},
onFileUploadComplete: function() {
console.log("File uploaded");
}
});
/**
* Upload d'une image
*/
router.post('/upload', uploads.single('image'), function (req, res, next) {
console.log("Front-end is calling");
res.json({status: 'success', data: 'Fichier chargé.\nOrgane sélectionné : ' + req.body.organ});
});
module.exports = router;
I ah sto scavando intorno ma non riesco a capire quale sia il problema dato che sono abbastanza nuovo per Node.js e JavaScript in generale.
Grazie per il vostro aiuto ragazzi!
perfetto grazie! –