var uploadData = new FormData(); uploadData.append('myFile', pdfData, fileName);pdfData proviene de otro servidor y se muestra a continuación en la consola (extracto):
%PDF-1.3 %¿÷¢þ 1 0 obj << /Metadatos 3 0 R /Páginas 4 0 R /Tipo /Catálogo >> endobj 2 0 obj
entonces es un archivo PDF en una cadena binaria (?).
La ejecución de este código conduce a la siguiente excepción:
Uncaught TypeError: Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'.Al intentar esto:
uploadData.append('myFile', new Blob([pdfData], {type: 'application/pdf'}, fileName);la solicitud se realiza pero recibo errores en el lado del servidor:
java.io.IOException: java.util.zip.DataFormatException: invalid code lengths setAsí que el PDF no se envía correctamente, supongo.
¿Cómo codificar pdfData correctamente?
compruebe si su instancia de Blob contiene un archivo PDF válido. Como esto:
const blob = new Blob([data], { type: file.mime_type }); const blob_url = URL.createObjectURL(blob);y luego crea un elemento para verlo:
const embed_element = document.createElement('embed'); embed_element.setAttribute('src', blob_url); embed_element.setAttribute('width', '800px'); embed_element.setAttribute('height', '2100px'); document.body.append(embed_element);¿Muestra correctamente el archivo PDF?
También debe verificar en sus herramientas de desarrollador si la solicitud se envía correctamente. Creo que debería verse similar a esto (FormData sin procesar en Chrome):