You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
FormData.append() stringifies Blob/File — fetch with a FormData body sends 0 bytes and no content-type #9842
FormData.append() stringifies every value, so a File or Blob is stored
as the string "[object Object]". Consequently a Request/fetch with a FormData body sends zero bytes and no content-type.
Per the spec, append(name, value) stringifies only when value is not a Blob; a Blob/File must be kept as an entry value.
This is the outgoing half of multipart. The incoming half is fine — the Request.formData() fix from #9617 works correctly, verified separately below.
File/Blob construct correctly — size, name, type and instanceof
are all right beforeappend.
append stores them as "[object Object]".
new Request(…, { body: fd }) sets nocontent-type and yields a 0-byte body. fetch does the same, so the server sees an empty request.
Note constructor.name is null for a correctly-constructed File/Blob,
which may or may not be related.
The incoming side is fine
Hand-crafting a multipart body and parsing it on the server works exactly as
expected on this same build — so #9617's fix is good and this is a separate
defect:
Any client that uploads with FormData sends an empty body. It fails quietly — the request is accepted, the server simply sees no file. In our
case (MB24) that is listing photos, KYC documents and claim photos.
It also makes a FormData-based test unable to exercise a working server
parser, which is what masked the state of #9617 for us: our spike posts with new FormData(), so it still failed after the parser was fixed.
Fixed by #9868, landed on main via merge train #9883. The train merged as its own branch, so the close-keyword never fired — closing manually, verified on main.
Activity
proggeramlug commentedon Sep 6, 2026
Fixed by #9868, landed on
mainvia merge train #9883. The train merged as its own branch, so the close-keyword never fired — closing manually, verified on main.