Estoy trabajando en una aplicación web REST que administra documentos entre usuarios y cargadores. El backend está escrito en Java y mi entidad Documento contiene, además de varios atributos, un byte[] content . Pude enviar un archivo creado en el lado del servidor por
@GET ... document.setContent(Files.readAllBytes(Paths.get("WEB-INF/testFile.txt"))); return Response.ok(document).build();y recuperarlo en el front-end (vueJs) a través de
async function download(file) { const fileURL = window.URL.createObjectURL(new Blob([atob(file.content)])); const fileLink = document.createElement("a"); fileLink.href = fileURL; fileLink.setAttribute("download",`${file.name}.${file.type}`); document.body.appendChild(fileLink); fileLink.click(); fileLink.remove; window.URL.revokeObjectURL(fileURL); } el problema es que cuando trato de cargar un archivo y luego descargarlo, su contenido no se analiza correctamente (se muestra indefinido, cadena en Base64 o números, según cómo intente resolverlo). El archivo se envía mediante una solicitud posterior y se recupera a través de un formulario de entrada vinculado a una función onFileSelected .
function onFileSelected(e) { var reader = new FileReader(); reader.readAsArrayBuffer(e.target.files[0]); reader.onloadend = (evt) => { if (evt.target.readyState === FileReader.DONE) { var arrayBuffer = evt.target.result; this.file.content = new Uint8Array(arrayBuffer); //this.file.content = arrayBuffer; } }; } axios.post(...,document,...) y también he intentado usar atob y btoa antes de asignar el valor a this.file.content . Si imprimo el archivo en el servidor Welcome.txt da B@ae3b74d y si uso Arrays.toString(welcome.getContent()) da una matriz de números, pero tan pronto como pasa a la interfaz, su contenido se convierte en Base64 welcome: { ... content: IFRoaXMgaXMgYSB0ZXN0IGZpbGUhIAo...} . ¿Alguna idea? ¡Muchas gracias!