En Blazor WASM tengo este código:
protected async Task Download() { base64Data = await Http.GetByteArrayAsync(url); await jsRunTime.InvokeVoidAsync("downloadFile", "application/pdf", base64Data, "test.pdf"); }Y en el archivo JavaScript tengo esto:
function downloadFile(contentType, base64Data, fileName) { const linkSource = `data:${contentType};base64,${base64Data}`; const downloadLink = document.createElement("a"); downloadLink.href = linkSource; downloadLink.download = fileName; downloadLink.click(); }Si trato de obtener un pdf realmente pequeño, funciona, pero si la cadena base64 es demasiado grande (un archivo con más de 400kB), tengo una falla en la red al descargar el archivo. Una cosa extraña está en la pestaña de la red Edge, en Fetch/XHR, no importa el archivo que intente descargar, el tamaño siempre es de 576kB.
¿Alguna idea de qué hacer? ¡Gracias!
Finalmente lo hice funcionar.
Tuve que usar GetStringAsync y recortar la respuesta del servidor porque la cadena base64 estaba entre comillas.
protected async Task Download() { base64Data = await Http.GetStringAsync(url); base64Data = base64Data.Trim('"'); await jsRunTime.InvokeVoidAsync("downloadFile", "application/pdf", base64Data, "test.pdf"); }¡Gracias chicos!