Javascript Multer file.filename和file.path未定义
我正在尝试使用express和multer在磁盘内存上上载/存储图像。我的代码概括如下:Javascript Multer file.filename和file.path未定义,javascript,node.js,express,multer,Javascript,Node.js,Express,Multer,我正在尝试使用express和multer在磁盘内存上上载/存储图像。我的代码概括如下: const express=require('express')) const multer=require('multer'); const upload=multer({ 目标:功能(请求、文件、cb){ cb(空,“上载/”) }, 文件名:函数(请求、文件、cb){ cb(null,file.fieldname+'-'+Date.now()) } }); app.post('/',upload.
const express=require('express'))
const multer=require('multer');
const upload=multer({
目标:功能(请求、文件、cb){
cb(空,“上载/”)
},
文件名:函数(请求、文件、cb){
cb(null,file.fieldname+'-'+Date.now())
}
});
app.post('/',upload.single('photo'),函数(req,res){
console.log(请求文件);
});
不幸的是,当我使用Postman发送POST请求(图像具有正确的字段名“photo”)时,filename
函数似乎不会影响该名称。文件以/uploads结束,但使用multer的默认命名方案(不是filename函数中定义的自定义名称)
另外,我的console.log(req.file)
行输出以下内容:
{fieldname:'photo',
原始名称:“test.jpg”,
编码:“7bit”,
mimetype:'image/jpeg',
缓冲区:,
尺寸:85404}
请注意,没有为req.file.filename
、req.file.destination
或req.file.path
定义值
知道我做错了什么吗 好的,回答了我自己的问题。如果它对其他人有用,我的问题是: 我没有使用multer.diskStorage()定义目标和文件名。要提供这些值,需要使用
.diskStorage()
方法。正确的用法应该是:
const multer=require('multer');
const storage=multer.diskStorage({//注意,这里调用的是multer.diskStorage()方法,而不是multer()
目标:功能(请求、文件、cb){
cb(空,“上载/”)
},
文件名:函数(请求、文件、cb){
cb(null,file.fieldname+'-'+Date.now())
}
});
const upload=multer({storage})//提供来自的返回值
然后您可以正常使用multer作为中间件,例如:
app.post('/',upload.single('photo'),函数(req,res){
//对req.file执行所需操作
});