Node Multer diskStorage 文件名不起作用

Node Multer diskStorage filename not working

我正在使用 diskStorage 引擎为我的 API 接收的图像分配目标和文件名。这是我的代码:

const express = require('express')
const router = express.Router()

const multer = require('multer')
const destination = 'imgs/'
const filename = (req, file, cb) =>{cb(null, new Date().toISOString + '_' + file.originalname)}
const storage = multer.diskStorage({destination, filename})
const upload = multer({storage: storage})

const Imagen = require('../dataaccess/model/Imagen')

除了我的文件命名外,一切正常。而不是我的文件被命名为:

'YYYY-MM-DDTHH:mm:ss.sssZ_file.jpeg'

它的名字是:

'function toISOString() { [native code] }_t1.jpg'

下面是端点代码:

router.post('/img/new', upload.single('newImage'), async (req, res)=>{

    /**
     * Validación de la existencia del archivo en la petición
     */
     if(!req.file){
         res.status(400).json({
             'message' : 'Error en los parámetros. No hay ningún archivo.',
             'req' : res.body,
         })
     }

    var username = req.body.username;
    let fecha = new Date();

    /**
     * Validación de los parámetros obligatorios
     */

     if(!username || !fecha){
         res.status(400).json({
             'mensaje' : 'Parámetros incompletos',
             'error' : err
         })
         return 
     }

     /**
      * Creación del nuevo Objeto Imagen
      */
     var img = new Imagen({
         username: username,
         fecha: fecha,
         path: req.file.path
     })

     await img.save( function (err, doc){
         if(err){
             res.status(500).json({
                 'mensaje' : 'Hubo un error al subir la imagen',
                 'error' : error
             })
             console.error(err)
             return
         }
         res.json(doc)
     })
}),

注意这一行 const filename = (req, file, cb) =>{cb(null, new Date().toISOString + '_' + file.originalname)};。您没有调用 toISOString 函数。您的代码应如下所示:

const filename = (req, file, cb) =>{cb(null, new Date().toISOString() + '_' + file.originalname)};

希望对您有所帮助。