Я пытаюсь загрузить файл из HTML-формы с помощью Express.js и Multer. Мне удалось сохранить файл в нужном месте (папка с именем загружает).Переименование загруженного файла с помощью Multer не работает (Express.js)
Однако я хотел бы переименовать файл во время его загрузки, потому что, по умолчанию, Multer дает ему странное имя, например:
5257ee6b035926ca99923297c224a1bb
Может быть шестнадцатеричной меткой времени или так, но мне нужно более явное имя, чтобы позже вызвать скрипт.
Я следовал найденному объяснению here, но он не делает ничего больше, чем раньше: загрузка файла с именем hexa.
Кроме того, эти два события onFileUploadStart и onFileUploadComplete никогда не кажутся срабатывать, как я не получаю ничего вошли в моей консоли.
Я использую два отдельных файла для сервера и маршрутизации:
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 ха я копался, но я не могу понять, в чем проблема, поскольку я совершенно новичок в Node.js и JavaScript в целом.
Спасибо за помощь, ребята!
совершенное спасибо! –