Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

356
Visualizações
El objeto FormData está vacío a pesar de que se está configurando al intentar enviar un archivo pdf como una solicitud POST de FormData de varias partes en Cypress

Quiero enviar el archivo pdf como una solicitud POST.

La API acepta @RequestPart y @RequestParam :

 @RequestPart("file") MultipartFile file; @RequestParam(value = "document-types", required = false) Set<String> documentTypes;

Traté de hacerlo de esa manera:

 it('test', () => { cy.fixture(pdfFilePath, "binary").then(file => { const data = new FormData(); data.set('file', file); data.set('document-types', 'New Type'); cy.request({ method: "POST", url: '/api/v4/documents', headers: { accepts: "multipart/form-data", authorization: authString }, body: data }).then((response) => { expect(response.status).to.eq(200) }); }); });

Y cuando ejecuto esto me sale:

Status: 400 - Bad Request

En Cypress veo que el cuerpo de la solicitud enviada está vacío: Body: {}

ingrese la descripción de la imagen aquí

Cuando traté de depurar el código, veo que data se envían vacíos como se ve en la captura de pantalla adjunta:

ingrese la descripción de la imagen aquí

Y me pregunto por qué porque trato de configurar los data siguiendo estos pasos en las líneas 154 y 155 en la captura de pantalla anterior:

 data.set('file', file); data.set('document-types', 'New Type');

¿Que me estoy perdiendo aqui?

Versión de ciprés: 9.0.0

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

debe agregar formData, el código a continuación es solo un ejemplo:

 const formData = new FormData() formData.append('file', files[0]) formData.append('name', files[0].name)
about 4 years ago · Juan Pablo Isaza Relatório

0

No está vacío, debe utilizar data.entries() para ver el contenido.

Parece que la función cy.request() intenta convertir el objeto FormData en un objeto JSON, lo cual es incorrecto.

De la documentación de ciprés también debe hacer uso de la form: true .

Referencias:

  • https://developer.mozilla.org/en-US/docs/Web/API/FormData
  • https://xhr.spec.whatwg.org/#interface-formdata
about 4 years ago · Juan Pablo Isaza Relatório

0

Como @Christopher mencionó en la respuesta, data no estaban vacíos. Tuve que usar data.entries() o simplemente data.get() para ver el contenido.

Pero de todos modos, no pude hacer que ese código funcionara.

En cambio, seguí el enfoque presentado en este video de YouTube y funcionó.

 it.only('test', () => { function form_request(method, url, formData, done) { const xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.setRequestHeader( "Authorization", "Basic YWRtaW46YWRtaW4=" ); xhr.onload = function () { done(xhr); }; xhr.onerror = function () { done(xhr); }; xhr.send(formData); } const fileName = "PdfFileName.pdf"; const method = "POST"; const url = '/api/v4/documents'; const fileType = "application/pdf" cy.fixture(pdfFilePath, "binary") .then((txtBin) => Cypress.Blob.binaryStringToBlob(txtBin)) .then((blob) => { const formData = new FormData(); formData.append("file", blob, fileName); formData.append("document-types", "New Type"); form_request(method, url, formData, function (response) { expect(response.status).to.eq(200); }) }); })
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda