Das Umbenennen einer hochgeladenen Datei mit Multer funktioniert nicht (Express.js)

Ich versuche, mit Express.js und Multer eine Datei aus einem HTML-Formular hochzuladen. Ich habe es geschafft, die Datei am gewünschten Ort zu speichern (Ordner mit dem Namen uploads).

Ich möchte die Datei jedoch beim Hochladen umbenennen, da Multer ihr standardmäßig einen seltsamen Namen gibt, z. B .:

5257ee6b035926ca99923297c224a1bb

Könnte ein hexadezimaler Zeitstempel sein oder so, aber ich benötige einen expliziteren Namen, um später ein Skript darauf aufzurufen.

Ich habe die Erklärung befolgt gefundenHie aber es macht nichts mehr als früher: Upload der Datei mit dem Hexa-Namen.

Auch die beiden Ereignisse onFileUploadStart und onFileUploadComplete scheint nie ausgelöst zu werden, da in meiner Konsole nichts angemeldet ist.

Ich verwende zwei separate Dateien für den Server und das Routing:

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;

Ich habe herumgegraben, aber ich kann nicht herausfinden, was das Problem ist, da ich für Node.js und JavaScript im Allgemeinen ziemlich neu bin.

ielen Dank für eure Hilf

Antworten auf die Frage(4)

Ihre Antwort auf die Frage