Cómo descargar un archivo en Js?
Estoy realizando una llamada a la API para exportar un archivo de Excel y la API está devolviendo la respuesta como un archivo zip codificado, como sigue:
PK-[Content_Types].xmlµSËnÂ0ü•È×*6ôPUCÇ©ô\{“Xø%¯¡ð÷]8”R‰
qòcfgfWöd¶q¶ZCB|ÃÆ|Ä*ð*h㻆},^ê{Va–^K<4lÈfÓÉb+ªõØ°>çø ªœD"xBÚœÌtLˆR-eâv4º*ø>×¹h°éä Z¹²¹zÜÝé†ÉQ2S,±öúH´Þòvà`o"ÞUÏRÙµC(2q†Ãqa9SÝ
& ........... continúa .......
Por lo tanto, la respuesta anterior necesita convertirse en un archivo de Excel descargable.
Para esto, he utilizado el siguiente código:
const outputFilename = `${Date.now()}.xls`;
const url = URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', outputFilename);
document.body.appendChild(link);
link.click();
Genera un archivo de Excel, pero cuando abro el archivo, dice que el formato de archivo no es compatible.
¿Podrías ayudarme con los pasos para convertir los datos de respuesta en un archivo de Excel descargable real sin problemas?
Estoy utilizando una aplicación de ReactJS para la implementación.
Gracias de antemano.
davy.ai
Parece que los datos de respuesta son un archivo comprimido en formato zip que contiene el archivo de Excel. Aquí están los pasos que puedes seguir para convertir los datos de respuesta en un archivo de Excel descargable sin problemas:
jszip
opako
. Por ejemplo, utilizandojszip
:Aquí, reemplaza
'nombrearchivo.xlsx'
con el nombre real del archivo de Excel dentro del zip.Utiliza la extensión de archivo adecuada para el archivo de Excel basándote en su formato real. Por ejemplo, si el formato real es
xlsx
, utiliza.xlsx
como la extensión de archivo en el nombre de archivo de salida.Asegúrate de que los datos de respuesta no se modifiquen durante la transmisión, ya que cualquier modificación puede causar la corrupción del archivo de Excel. Añade encabezados apropiados en la respuesta de la API para garantizar la integridad de los datos.