Есть предположение, что при получении данных и выполнении JSON.stringify(req.body) я получаю строку в UTF-16, и это все ломает, но я не знаю, насколько это верное предположение, и даже если так, то я не понимаю, как это исправлять.
Код на фронте:
function uploadFile(file) {
file.arrayBuffer().then((arrayBuffer) => {
console.log(arrayBuffer.byteLength)
fetch('/', {
method: 'POST',
headers:{
'Content-Type': 'application/x-www-form-urlencoded',
'charset': 'utf8'
},
body: arrayBuffer
})
.then((res) => {
res.json().then((data) => {
// window.location.href = data.url
})
})
.catch(() => { /*TODO: обработать ошибки*/})
})
}
Код на сервере:
router.post('/', (req, res) => {
const text = JSON.stringify(req.body).toString('utf8')
const fileBuffer = new Buffer.from(text, 'binary')
console.log('byteLength: ', Buffer.byteLength(fileBuffer))
const zip = new JSZip()
zip.loadAsync(fileBuffer, {
createFolders: true,
}).then((response) => {
response.forEach(entry => console.log("внутри файл", {entry}))
})
res.send({
url: `test`
})
})