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;
  • Cancelar / Anular todas las requestes pendientes en angularJs
  • Solicitud XHR / Post usando D3
  • Establecer un punto de interrupción en XHR en Chrome
  • Accediendo al 'localhost' del Cliente desde JavaScript Online
  • ¿Qué browseres tienen problemas para almacenar en caching las respuestas XMLHTTPRequest?
  • Cómo cargar múltiples files en 1 request http
  • Javascript / AJAX no funciona en Opera, funciona perfectamente en FF / IE / Chrome
  • Angular js - $ time de caching http?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.