Open leplatrem opened 7 years ago
function upload() {
const formData = new FormData(document.getElementById('myForm'));
const headers = {
'Accept': 'application/json, */*',
'Content-Type': 'multipart/form-data'
}
const init = {
headers,
method: 'POST',
body: formData
};
fetch('/upload', init).then(res => console.log(res));
}
I try to POST files by that func, but the 'boundary' is not in request payload. how should i do? below is the request payload:
------WebKitFormBoundary2gPDSneqBnpU2L4v Content-Disposition: form-data; name="files"; filename="fox.jpg" Content-Type: image/jpeg
------WebKitFormBoundary2gPDSneqBnpU2L4v Content-Disposition: form-data; name="path"
/ ------WebKitFormBoundary2gPDSneqBnpU2L4v--
Hey @justinjzs take 'Content-Type' out of the headers. The browser should add it automatically (including the boundary).
@gusdaud @justinjzs @leplatrem Was this issue resolved? boundary is not being passed for me in the request header automatically even after explicitly setting 'Content-Type': 'multipart/form-data' header.
Does anyone have a working example of this?
@gusdaud's solution worked for me.
This should be closed
In the browser, if I do something like:
The request issued in the browser will have
Content-Type:"multipart/form-data; boundary=---------------------------<random-number>
and the body will be like:I would also work (from the browser) using blobs:
For our integration tests we're using isomorphic-fetch@2.2.1 and jsdom@9.4.1 and we can't get obtain the same behavior (content-type and body seem to remain empty). I could not find any existing issue that was specific to multiparts (#30 is about FormData).
Is that something reasonably feasible ? Can we help ?
Thanks a lot!