example - fetching data javascript
fetch-Falta el lĂmite en multipart/form-data POST (4)
Agregue headers:{content-type: undefined}
navegador generará un límite para usted que es para cargar un archivo parte y parte con transmisión si está agregando ''datos múltiples / formulario'', esto significa que debe crear transmisión y cargar su presentar parte y parte
Por lo tanto, está bien agregar request.headers = {content-type: undefined}
gracias por pasar.
Quiero enviar un new FormData()
como el body
de una solicitud POST
usando la api de búsqueda
la operación se ve algo como esto
var formData = new FormData()
formData.append(''myfile'', file, ''someFileName.csv'')
fetch(''https://api.myapp.com'',
{
method: ''POST'',
headers: {
"Content-Type": "multipart/form-data"
},
body: formData
}
)
El problema aquí es que el límite, algo así como
boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu
nunca lo hace en el tipo de Content-Type:
encabezado
Debe tener un aspecto como este
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu
cuando intenta la "misma" operación con un new XMLHttpRequest()
, como tal
var request = new XMLHttpRequest()
request.open("POST", "https://api.mything.com")
request.withCredentials = true
request.send(formData)
los encabezados están correctamente establecidos
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu
entonces mi pregunta es
¿Cómo hago que
fetch
comporte exactamente comoXMLHttpRequest
en esta situación?Si esto no es posible, ¿por qué?
¡Gracias a todos! Esta comunidad es más o menos la razón por la que tengo éxito profesional.
Estoy usando aurelia-api (una envoltura para aurelia-fetch-client). En este caso, el valor predeterminado de Content-Type es ''application / json''. Así que configuré el tipo de contenido como indefinido y funcionó a la perfección.
La solución al problema es establecer Content-Type
explícitamente en undefined
para que su navegador o cualquier cliente que esté usando pueda configurarlo y agregar ese valor de límite allí para usted. Decepcionante pero cierto.
fetch(url,options)
- Si configura una cadena como
options.body
, debe establecer elContent-Type
en el encabezado de solicitud, o serátext/plain
de forma predeterminada. Si options.body es un objeto específico como
let a = new FormData()
olet b = new URLSearchParams()
, no tiene que configurar elContent-Type
mano. Se agregará automáticamente.- para
a
, será algo así como
multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Como ves, el límite se agrega automáticamente.
- para
b
, esapplication/x-www-form-urlencoded;
- para