Estoy usando Vue js para realizar una solicitud de publicación a una API de back-end. Los datos de respuesta deben descargarse en un archivo zip. Aunque el archivo se descarga como un archivo zip, recibo un error cuando intento abrir el archivo. Mensaje de error: Windows no puede abrir la carpeta. La carpeta comprimida (en zip) "........\test.zip" no es válida.
Aquí está mi código vue
let config = { Headers: { "Content-Type": "multipart/form-data", responseType: "blob", }, }; axios .post( `http://localhost:5050/generator`, this.forms, config ) .then((response) => { const zipName = "test"; this.forms = { productName: "", companyName: "", }; const url = window.URL.createObjectURL( new Blob([response.data], { type: "application/zip" }) ); const link = document.createElement("a"); link.href = url; link.setAttribute("download", zipName + ".zip"); document.body.appendChild(link); link.click(); });Actualizar
Usé este código
function _base64ToArrayBuffer(base64) { var binary_string = window.atob(base64); var len = binary_string.length; var bytes = new Uint8Array(len); for (var i = 0; i < len; i++) { bytes[i] = binary_string.charCodeAt(i); } return bytes.buffer; }para convertirlo en un UintArray. Recibí otro error 'DOMException: no se pudo ejecutar 'atob' en 'Ventana': la cadena que se decodificará no está codificada correctamente'.