当我通过multer上传图像时,我的服务器nodejs有些问题。 https://github.com/expressjs/multer 当我去文件夹上传时,我没有看到我的文件上传!
我的代码:
app.use(multer(
{
dest: path.join(__dirname, 'uploads'),
inMemory: true,
includeEmptyFields: true,
onFileUploadStart: function (file, req, res) {
console.log('onFileUploadStart');
console.log(file);
},
onFileUploadData: function (file, data, req, res) {
console.log('onFileUploadData');
console.log(file);
},
onFileUploadComplete: function (file, req, res) {
console.log('onFileUploadComplete');
console.log(file);
},
limits: {
fieldNameSize: 999999999,
fieldSize: 999999999
},
onParseStart: function() {
console.log('Starting to parse request!');
},
onParseEnd: function(req, next) {
console.log('Done parsing!');
next();
},
onError: function(e, next) {
if (e) {
console.log(e.stack);
}
next();
}
}));
路线:(我收到了客户的文件)
router.post('/newapi/addimages',function(req,res){
try{
// fileName = file.name, file name passed by client. Not used here. We use the name auto-generated by Node
var file = req.files.file;
var filePath = file.path;
var lastIndex = filePath.lastIndexOf("/");
var tmpFileName = filePath.substr(lastIndex + 1);
var image = req.body;
image.fileName = tmpFileName;
return res.send({ok:'heyyou'});
}
catch(err){
console.log(err);
return res.send({ok:'heyyou'});
}
});
我的结果:
答案 0 :(得分:3)
这是因为您将inMemory
选项设置为true
。此选项使图像保留在进程内存中,而不是将其传送到文件系统,并可通过req.files.file.buffer
访问。
将inMemory
更改为false
,您就可以了。
您没有 来设置每个选项,对于您的应用程序,您可以使用大多数默认值。
app.use(multer({ dest: path.join(__dirname, 'uploads') }));