Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

246
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda