Estoy obteniendo una URL como esta:
fetch(url, {
mode: 'no-cors',
method: method || null,
headers: {
'Accept': 'application/json, application/xml, text/plain, text/html, *.*',
'Content-Type': 'multipart/form-data'
},
body: JSON.stringify(data) || null,
}).then(function(response) {
console.log(response.status)
console.log("response");
console.log(response)
})
Mi API espera que los datos sean de, multipart/form-datapor lo que estoy usando content-typeeste tipo ... Pero me está dando una respuesta con el código de estado 400.
¿Qué pasa con mi código?
fuente

Recientemente estuve trabajando con IPFS y resolví esto. Un ejemplo de curl para que IPFS cargue un archivo se ve así:
curl -i -H "Content-Type: multipart/form-data; boundary=CUSTOM" -d $'--CUSTOM\r\nContent-Type: multipart/octet-stream\r\nContent-Disposition: file; filename="test"\r\n\r\nHello World!\n--CUSTOM--' "http://localhost:5001/api/v0/add"La idea básica es que cada parte (dividida por cadena
boundarycon--) tiene sus propios encabezados (Content-Typeen la segunda parte, por ejemplo). ElFormDataobjeto gestiona todo esto por ti, por lo que es una mejor manera de lograr nuestros objetivos.Esto se traduce en buscar API como esta:
const formData = new FormData() formData.append('blob', new Blob(['Hello World!\n']), 'test') fetch('http://localhost:5001/api/v0/add', { method: 'POST', body: formData }) .then(r => r.json()) .then(data => { console.log(data) })fuente
FormDataejemplo, no lo necesita, porque el navegador envía ese encabezado por usted y también administra todos los límites de mímica, que es el objetivo de esta solución.