J'essaye de télécharger un fichier à partir d'un formulaire HTML en utilisant Express.js et Multer. J'ai réussi à enregistrer le fichier à l'emplacement souhaité (un dossier nommé télécharge).Renommer un fichier téléchargé en utilisant Multer ne fonctionne pas (Express.js)
Cependant, je voudrais renommer le fichier en le téléchargeant car, par défaut, Multer donne un nom étrange, comme:
5257ee6b035926ca99923297c224a1bb
peut-être un horodatage hexadécimal ou alors, mais j'ai besoin d'un nom plus explicite afin d'appeler un script dessus plus tard.
J'ai suivi l'explication trouvée here mais elle ne fait rien de plus qu'utiliser pour: télécharger le fichier avec le nom hexa.
En outre, les deux événements onFileUploadStart et onFileUploadComplete ne semblent jamais être déclenchée que je ne suis rien connecté ma console.
J'utilise deux fichiers séparés pour le serveur et le routage:
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 Ha J'ai creusé autour mais je ne peux pas comprendre quel est le problème car je suis assez nouveau pour Node.js et JavaScript en général.
Merci pour votre aide les gars!
parfait merci! –