Describe the bug
Relying on axios automatic serialization to create a form-data results in this error. The following lines are responsible of this error : https://github.com/axios/axios/blob/release/dist/node/axios.cjs#L2654 (mainly the getLengthSync function)
According to form-data themselves, using getLengthSync is not recommended.
To Reproduce
- Create a file buffer with
fs.createReadStream
- Set HTTP header
Content-Type to multipart/form-data to make use of automatic serialization
- Get the form-data
Cannot calculate proper length in synchronous way. error
Code snippet
const axios = require("axios");
const fs = require("node:fs");
const fileBuffer = fs.createReadStream("./file.ext");
axios.post('https://httpbin.org/post', {file: fileBuffer}, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then(({data}) => console.log(data))
.catch((err) => console.error(err));
Expected behavior
The content length should be calculated without throwing any error.
Axios Version
1.3.0
Adapter Version
No response
Browser
No response
Browser Version
No response
Node.js Version
16.19.0
OS
No response
Additional Library Versions
No response
Additional context/Screenshots
No response