gpt4 book ai didi

javascript - Node.js:根据 FormData 值设置 Multer 目标

转载 作者:行者123 更新时间:2023-11-30 11:34:29 25 4
gpt4 key购买 nike

我正在创建一个 XMLHttpRequest (xhr),它将包含一个文件和一些值的 FormData 对象发送到 Node.js(Express) 服务器。我正在使用 Multer,因为我不能将 bodyParsermultipart 数据一起使用。

router.post("/submit", function(req, res) {
var storage = multer.diskStorage({
// set destination here
})

var upload = multer({ storage: storage }).any();

upload(req, res, function (err) {
// I can access req.body here
});
});

我在 storage 中设置的 destination 将取决于 body 对象的值(如 req.body.product )。但是在调用 multer() 之前我无法访问 req.body。如何在设置 multer.storage 之前访问 req.body

最佳答案

您需要为diskStorage() 使用destination 配置属性as shown in the multer documentation .例如:

var storage = multer.diskStorage({
destination: function(req, file, cb) {
var newAbsoluteDir = /* calculate based on `req.body` here */;
cb(null, newAbsoluteDir);
}
});

var upload = multer({ storage });

// ...

router.post('/submit', upload.any(), function(req, res) {
// ...
});

如文档所述,您需要在那些 multer 回调中访问的任何非文件字段都需要定位在您正在处理的文件字段之前,因为 multipart/form-data 请求有它们的字段下令。因此,如果您有一个静态 HTML 表单,那么重要的是输入、选择等元素的文字位置。对于 XHR,这是您为每个字段调用 formData.append() 的顺序。

关于javascript - Node.js:根据 FormData 值设置 Multer 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45041714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com