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)};
希望对您有所帮助。
我正在使用 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)};
希望对您有所帮助。