Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Multer file.filename和file.path未定义_Javascript_Node.js_Express_Multer - Fatal编程技术网

Javascript Multer file.filename和file.path未定义

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.

我正在尝试使用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.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执行所需操作
});