nodejs中post参数body指向报错

谢谢大家,是这样的,我在学习nodejs,想实现图片上传过程中遇到了问题,
前端代码:

<input type="file" name="file" id="file">
    <button id="btn">上传button>
    <img src="" alt="" id="img">
    <script>
        let file = document.querySelector('#file')
        let btn = document.querySelector('#btn')
        let img = document.querySelector('#img')
        btn.addEventListener('click',function(){
            console.log(file.files[0]);
            let files_data = file.files[0]
            let fileReader = new FileReader()
            fileReader.readAsDataURL(files_data)
            let base64;
            let date = new Date()
            let time = date.toJSON()
            fileReader.onloadend = function(e){
                base64 = e.target.result
                console.log('base641',base64);
                img.src = e.target.result
                console.log(typeof e.target.result);
                let xml = new XMLHttpRequest()
                xml.open('POST','http://localhost:3000/api/swiper',true)
                xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xml.onload = function(){

                }
                console.log('base64',base64);
                let obj = {
                    swi_url:base64,
                    swi_qiyong:false,
                    swi_type:'活动',
                    swi_time:time
                }
                xml.send(JSON.stringify(obj))
            }
        })

nodejs代码:

const express = require('express')
const router = express.Router()
const multer = require('multer')
const mysql = require('../model/index')
const path = require('path')
const dizhi = path.join(__dirname,'../upload')
router.post('/',async(req,res) => {
    const data = req.body
    console.log(data);
})
module.exports = router

我在前端代码中,将图片转成了base64格式的数据,然后通过post请求传递到了后端,我也通过req.body接收到了,但是无法指向其中的某一个数据,指向了就会报错,也无法json.parent这些body参数数据,想请问一下大家代码哪里出错了。
刚开始学nodejs,问的问题确实baici,谢谢大家理解

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据你提供的代码,可以看到你在前端使用的是 XMLHttpRequest 对象发送 POST 请求,并且设置请求头为 "Content-type": "application/x-www-form-urlencoded",但是你在后端使用的是 req.body 来接收请求体。这就出现了数据格式不匹配的问题。

如果你使用 XMLHttpRequest 对象发送 POST 请求,并且设置请求头为 "Content-type": "application/json",那么后端使用 req.body 来接收请求体就是一个 JSON 对象。代码如下:

前端代码:

let xml = new XMLHttpRequest()
xml.open('POST', 'http://localhost:3000/api/swiper', true)
xml.setRequestHeader("Content-type", "application/json");
xml.onload = function () {}
let obj = {
  swi_url: base64,
  swi_qiyong: false,
  swi_type: '活动',
  swi_time: time
}
xml.send(JSON.stringify(obj))


后端代码:

router.post('/', async(req, res) => {
  const data = req.body
  console.log(data.swi_url)
})


这样你就可以通过 data.swi_url 来访问前端发送过来的数据了。