Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

242
Vistas
No se puede abrir el archivo zip enviado desde Flask

Tengo un archivo zip en mi servidor y quiero crear un botón de descarga para el usuario, aquí está el código de mi matraz:

 @app.route("/profile", methods=["GET", "POST"]) def profile(): if request.method == "GET": return render_template("profile.html") if request.method == "POST": #Some code return send_file(f"user_projects/delivery.zip")

Y aquí está mi código JS:

 xhr.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { if (something) { some code } else { var zipFile = new Blob([this.response]) var url = URL.createObjectURL(zipFile) downloadLink.href = url; } } }

Cuando hago clic en el elemento "a" (downloadLink) puedo descargar el archivo zip, pero cuando trato de abrirlo aparece un error que dice:

ERRORES: No es archivo ADVERTENCIAS: Error de encabezados

El archivo zip del servidor está 100% bien, puedo abrirlo sin ningún problema, el problema es cuando lo descargo de mi sitio web, así que creo que hay algo que doy por sentado. Cualquier ayuda es apreciada, gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tengo que resolver el problema siguiendo esta respuesta y ahora puedo descargar el archivo zip, solo para que conste:

Modifiqué el código del servidor, tuve que abrir el archivo como binario y codificarlo en base64:

 with open(f"user_projects/delivery.zip", mode="rb") as binaryFile: binaryFile = binaryFile.read() archivoEnBase64 = base64.b64encode(binaryFile) return archivoEnBase64

Aquí está el código JS modificado:

 var zipFile = new Blob([atob(this.response)], {"type": "application/zip"}) var url = URL.createObjectURL(zipFile) downloadLink.href = "data:application/zip;base64," + this.response;

La respuesta a la solicitud es una cadena de bytes, así que la decodifiqué con atob() y el atributo href usa el esquema URI de datos:

datos:[tipo de medio][;base64],datos

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda