如何将数组缓冲数据与字符串/JSON一起发送到NodeJS服务器

9

我需要在一个请求中从客户端页面发送图像数据(读取为数组缓冲区),以及页面生成的附加字符串/ json信息,将它们发送到NodeJS服务器。 我需要在一个请求中处理这两个部分,因为服务器对附带发送的字符串/ json进行进一步的图像处理。 有哪些方法可以通过客户端发送它们,然后由服务器解析它们,以便满足这些标准?


JSON.parse/JSON.stringify 应该可以很好地处理类型化数组。 - Bergi
2个回答

9
你需要的是使用FormData的多部分请求。

FormData可以作为fetch中的body,并支持Blob。 一个例子如下:

var binary = new Uint8Array(2)
binary[0] = 65
binary[1] = 66

var fd = new FormData()
fd.append('json_data', JSON.stringify({a: 1, b: 2}))
fd.append('binary_data', new Blob([binary.buffer]))

fetch('https://example.com/receive', {
  method: 'POST',
  body: fd
}).then(console.log)

注意:如果您在服务器上使用express,请注意bodyparser 无法处理多部分主体!

multerconnect-busboymultiparty可替代bodyparser。


1

如果你使用express.js,你可以使用multer

从他们的文档中得知:

var express = require('express')
var multer  = require('multer')
var upload = multer({ dest: 'uploads/' })

var app = express()

app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接