Node.js 将base64编码图像从浏览器上载到nodejs express时出现无效json错误

Node.js 将base64编码图像从浏览器上载到nodejs express时出现无效json错误,node.js,file-upload,base64,Node.js,File Upload,Base64,我使用的是express 4.13.1 我的http请求如下所示 const express = require('express'); const uploader = require('./config/routes/uploader'); const cors = require('cors'); const app = express(); const corsOptions = { origin: 'http://localhost:4200', optionsSuccess

我使用的是express 4.13.1 我的http请求如下所示

const express = require('express');
const uploader = require('./config/routes/uploader');
const cors = require('cors');
const app = express();

const corsOptions = {
  origin: 'http://localhost:4200',
  optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
  methods: 'GET,HEAD,PUT,OPTIONS,POST,DELETE',
  credentials: true
};
app.use(cors(corsOptions));
app.use('/api/uploader', uploader);

我从节点得到以下错误

但是我还没有为路由配置解析器

/api/上传器/上传\u配置文件\u图像\u base64/

我的控制器代码如下,用于处理base64编码的图像,请求在到达控制器方法之前失败

exports.handleProfileImageUploadBase64 = (req, res) => {
  console.log('>>>gg',req.body,'gg<<<');
  let matches = req.body.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/);

  if (matches.length !== 3) {
    return res.status(400).send('Unexpected request body');
  }

  let type = matches[1];
  let imageBuffer = new Buffer(matches[2], 'base64');
  console.log('>>>uu',imageBuffer,'uu<<<');
  let imgPath = path.resolve('./profile_image_uploads/');
  fs.writeFile('test.jpg', imageBuffer.data, function(err) {
    console.log('>>>gg',err,'gg<<<');
  });
  fs.readdir(imgPath, (err, files) => {
    files.forEach(file => {
      console.log('>>>pp',file,'pp<<<');
    });
  });
  res.json({
    "img":type
  });
  /*res.end();*/
};
和app.js,如下所示

const express = require('express');
const uploader = require('./config/routes/uploader');
const cors = require('cors');
const app = express();

const corsOptions = {
  origin: 'http://localhost:4200',
  optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
  methods: 'GET,HEAD,PUT,OPTIONS,POST,DELETE',
  credentials: true
};
app.use(cors(corsOptions));
app.use('/api/uploader', uploader);

将响应更改为res.json({img:type});实际上,请求甚至没有命中控制器方法,节点上的异常堆栈跟踪是当从浏览器发送请求时,我假设由于http body中的base64映像而给出的无效json不是有效的json,我不希望它被json解析器解析,json解析器是body parser中间件,尽管我并没有为此路由配置它,但express似乎无论如何都要解析它。若您不想使用json解析器,那个么为什么要将请求的头类型设置为“Application/json”?为什么不以“表单数据”或“x-www-form-urlencoded”的形式发送?