req.files 在 Express 应用中使用 multer 时为空
req.files is empty when using multer in express app
我正在尝试在快速应用程序中使用 multer 将不同类型的文件上传到服务器。但是每次服务器通过声明 TypeError: req.files is not iterable 进行响应时。我查了一下 req.files 是空的。
这是相同的代码:
var express = require('express');
var app = express();
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
var upload = multer({ storage: storage }).array('userfiles', 10);
app.post('/upload', function (req, res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
return res.status(500).json(err);
} else if (err) {
// An unknown error occurred when uploading.
return res.status(500).json(err);
}
let uploadedFiles = [];
for (let item of req.files) {
uploadedFiles.push({ filename: item.originalname });
}
// Everything went fine.
res.json({ progress: 100, files: uploadedFiles });
})
});
app.listen(8000, (err) => {
if (err) {
console.log('ERROR:', err);
} else {
console.log('working on http://localhost:8000');
}
})
这就是我从邮递员那里调用 API 的方式:
Postman UI
我无法弄清楚问题出在哪里。请帮我解决这个问题。
我 运行 他的代码,他试图将图像存储在我的文件系统的根目录下。
要引用相对于您当前目录的路径,您需要使用 ./
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/') // change 'upload/' to './uṕload'
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
在此之后,代码有效。
我正在尝试在快速应用程序中使用 multer 将不同类型的文件上传到服务器。但是每次服务器通过声明 TypeError: req.files is not iterable 进行响应时。我查了一下 req.files 是空的。
这是相同的代码:
var express = require('express');
var app = express();
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
var upload = multer({ storage: storage }).array('userfiles', 10);
app.post('/upload', function (req, res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
return res.status(500).json(err);
} else if (err) {
// An unknown error occurred when uploading.
return res.status(500).json(err);
}
let uploadedFiles = [];
for (let item of req.files) {
uploadedFiles.push({ filename: item.originalname });
}
// Everything went fine.
res.json({ progress: 100, files: uploadedFiles });
})
});
app.listen(8000, (err) => {
if (err) {
console.log('ERROR:', err);
} else {
console.log('working on http://localhost:8000');
}
})
这就是我从邮递员那里调用 API 的方式: Postman UI
我无法弄清楚问题出在哪里。请帮我解决这个问题。
我 运行 他的代码,他试图将图像存储在我的文件系统的根目录下。
要引用相对于您当前目录的路径,您需要使用 ./
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/') // change 'upload/' to './uṕload'
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
在此之后,代码有效。