我正在使用express服务器作为我的微服务的API网关,我正在其中处理图像并将它们存储在数据库中。问题总结如下:在express服务器中,我需要从客户端转发在一个post请求中接收到的图像,并将其转发到可以处理图像处理的web服务。结果是,我需要在将映像转发到下一个API之前对其进行解析,我得到的错误是在JSON的位置0
处出现意外的令牌
她是我的客户端,它将图像发送到express服务器(我的网关)
function uploadWithFormData() {
const formData = new FormData();
formData.append("file", file);
fetch('/upload', {
method: "POST",
headers: {
"content-type": "application/json",
},
body: data
}).then(handleResponse)
.catch(handleError);
uploadImage(formData);
}
这是我的express服务,它应该处理请求并将其转发到另一个web服务
const app = express();
const bodyParser = require('body-parser');
app.post("/upload", function (req, res) {
let formData = new FormData();
formData.append('file', fs.createReadStream(req.files.file.path), req.files.file.name);
uploadImageAPI(formData).then(
res.status(201).send()
).cache(res.status(412).send())
});
我曾尝试在函数内部创建一些consol.log来查看请求,但请求在进入函数之前失败,因为express无法解析图像。我看到一些人使用multer库来做这件事,但我无法管理,在我的情况下,有什么建议吗?
您正在发布FormData对象,该对象将被转换为multipart/form-data
。
您不会发布JSON。
您已经设置了“content-type”:“application/json”
,因此您声称您正在发布JSON。
服务器尝试解码“JSON”,失败并抛出错误。
不要重写content-type
头。fetch
将在传递FormData对象时自动生成一个合适的对象。
请使用支持多部分请求的正文解析模块。body-parser
没有,但它的文档链接到几个有此功能的文档。