在 POST 请求中将 pdf(或任何文件)作为 json 字符串发送,然后通过 fs 将其写下来

Sending pdf (or any file) over in a POST request as json string and then writing it down by fs

我正在创建一个网站,我需要制作一个后端 POST 服务器。我已经创建了其中的 90%,但我面临的问题是我需要发送 JSON 以及 pdf(通常由 multipart/form-data 发送,但需要不同的路由)。我想要做的是将文件转换为 base64string,在请求中发送它,然后将其恢复并写入文件。整个事情就这样发生了,PDF甚至returns乱码了,但是PDF被转回二进制写入后还是空白页
HTML端JS代码:

async function post(endpoint){
    let binaryCV;
    let CV = document.getElementById("upfile").files[0];
        var reader = new FileReader();
        reader.onload = (readerEvt)=>{
            var binaryString = readerEvt.target.result;
            binaryCV = binaryString;
            let xhr = new XMLHttpRequest();
            let object = {
                name: document.getElementById("ecaName").value,
                email: document.getElementById("ecaEmail").value,
                phone: document.getElementById("ecaTel").value,
                class: document.getElementById("ecaClass").value,
                institute: document.getElementById("ecaInstitute").value,
                paragraph:{
                    experience: document.getElementById("ecaExp").value,
                    why: document.getElementById("ecaWhyPart").value,
                    changes: document.getElementById("ecaWhatChanges").value,
                },
                CV: binaryCV,
            }
            xhr.open("POST", `http://localhost:8080/apply/internship/${endpoint}`,true);
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.send(JSON.stringify(object));
        };

        await reader.readAsBinaryString(CV);
    /*xhr.onload = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("demo").innerHTML = xhttp.responseText;
        }
    };*/
}

服务器端 JS 回调:

        app.post('/apply/internship/econoxe', async (req, res)=>{
            res.sendStatus(200);
            let CV = req.body.CV;
            fs.writeFileSync(path.join(__dirname,`../CV/${req.body.email}.pdf`),CV)
            console.log(req.body);
        })

无论我上传什么 PDF,所有这些 returns 100% 空白 PDF(由于某些原因,文件大小比原始文件大)
请帮助
如果你知道任何其他方式来完成我在一个请求和路由中的意思,请告诉!

我找到了答案!
我不得不改变

fs.writeFileSync(path.join(__dirname,`../CV/${req.body.email}.pdf`),CV)

fs.writeFileSync(path.join(__dirname,`../CV/${req.body.email}.pdf`),CV,"binary")

这将解决问题