我想以二进制形式将图像发布到我的Express应用程序。
我假设它应该在req.body
对象中出现,但需要某种形式的中间件才能处理二进制数据?
当我从邮递员发送二进制图像并尝试登录req.body时,该对象为空。
我使用快速生成器作为一个带有body-parser
的boilder板,如下所示:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
我看过Multer,但认为这只适用于多部分数据
还看了一下busboy,但无法弄清楚是否会处理二进制数据。
我是否更正了帖子数据仍会在req.body中出现? 我需要什么中间件来处理二进制数据?
由于
答案 0 :(得分:3)
我最终使用的方法:
const multer = require('multer')
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })
router.post('/upload', upload.single('image'), function(req, res, next) {
const image = req.file.buffer
});
答案 1 :(得分:2)
不幸的是,你不能使用正文解析器来处理二进制数据,比如文件和类似的东西。但你可以做的是使用模块调用formidable
来处理这个
示例解析器
app.post('/', (req, res) => {
const form = new formidable.IncomingForm();
form.parse(req, (error, fields, files) => {
if(error){
console.log(error)
}
console.log(fields.name)
const cuteCat = files.cat_image;
console.log(cuteCat.name) // The origin file name
console.log(cuteCat.path) // The temporary file name something like /tmp/<random string>
})
});
&#13;
<input name="cat_image" type="file" />
<input name="name" type="text" />
&#13;