fetch – Falta el límite en multipart / form-data POST

gracias por pasar.

Deseo enviar un new FormData() como el body de una request POST usando la aplicación fetch

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 llega al encabezado Content-Type:

Debe tener un aspecto como este

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

cuando intenta la "misma" operación con una new XMLHttpRequest() , como tal

 var request = new XMLHttpRequest() request.open("POST", "https://api.mything.com") request.withCnetworkingentials = true request.send(formData) 

los encabezados están configurados correctamente

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

entonces mi pregunta es,

  1. ¿Cómo hago que fetch comporte exactamente como XMLHttpRequest en esta situación?

  2. si esto no es posible, ¿por qué?

¡Gracias a todos! Esta comunidad es más o less la razón por la que tengo éxito profesional.

3 Solutions collect form web for “fetch – Falta el límite en multipart / form-data POST”

La solución al problema es establecer explícitamente Content-Type en undefined para que su browser o cualquier cliente que esté utilizando pueda configurarlo y agregar ese valor límite allí para usted. Decepcionante, pero cierto.

Estoy usando aurelia-api (un contenedor para aurelia-fetch-client). En este caso, el valor pnetworkingeterminado del tipo de contenido es 'application / json'. Así que configuré el Tipo de contenido como indefinido y funcionó como un amuleto.

 fetch(url,options) 
  1. Si configura una cadena como options.body , debe configurar el Content-Type en el encabezado de request, o será text/plain de manera pnetworkingeterminada.
  2. Si options.body es un object específico como let a = new FormData() o let b = new URLSearchParams() , no tiene que establecer el tipo de Content-Type mano. Se agregará automáticamente.

    • para a , será algo así como

    multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

    como ve, el límite se agrega automáticamente.

    • para b , es application/x-www-form-urlencoded;
  • ¿Cómo se traducen los datos en un object FileReader en datos de formulario para su carga?
  • ¿Las implementaciones actuales de XHR aprovechan HTTP / 2?
  • Administrar el almacenamiento en caching de grandes sets de datos en un browser de resources limitados (mobile)
  • La publicación javascript de segment.io falla con un error CORS
  • Solicitud de descarga de files con XMLHttpRequest
  • Número máximo de requestes http utilizando trabajadores web
  • ¿Qué encabezados HTTP pueden establecerse en JavaScript?
  • Problema de intercambio de origen de la API java de Wolfram API
  • Cross-site XMLHttpRequest
  • Cómo establecer el contenido de iframe de un componente de reacción
  • Cómo manejar el estado 302?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.