我正在使用multer-s3,并且定义了以下方法:
const singleImageUpload = multer({
storage: multerS3({
s3: s3,
bucket: "pilled",
acl: "public-read",
key: function(req, file, cb) {
cb(null, Date.now() + "-" + req.user.id);
}
}),
limits: {
fileSize: 50 * 1024 * 1024
}
}).single("image");
在发布路线中,我将此方法称为:
router.post(
"/single", auth, async (req, res) => {
let file = null;
singleImageUpload(req, res, error => {
file = req.file;
if (error) {} else { /* ... */ };
});
console.log('file', file); // null
这里的问题是file
没有分配给req.file
。我试过将它包装在一个封闭的容器中,
router.post(
"/single", auth, async (req, res) => {
let file = null;
const closure = file => {
singleImageUpload(req, res, error => {
file = req.file;
if (error) {} else { /* ... */ };
});
}
closure(file);
console.log('file', file); // null
但是,{file
仍然为空。我该如何实现? req.file
在multer解析后消失了,但是我仍然需要它的元数据在发布路线的后面。