Estoy creando un descargador de videos de YouTube para el cual uso un matraz para el backend. Envío una solicitud ajax al matraz a cambio de un archivo de retorno del matraz que, de forma predeterminada, se configura para descargar. El archivo comienza a descargarse pero el problema es que no hay texto de respuesta o código de estado en la función de éxito en ajax
Función Ajax que solía trabajar de la misma manera que lo hace jquery ajax
Mi código Ajax es
let formData = new FormData(downloadform); ajax({ url: '/download', method: "POST", data: formData, onprogress: () => { download_loadingBtn.style.display = "block"; downloadBtn.style.display = "none"; }, onsuccess: (responseText, status, statusText) => { download_loadingBtn.style.display = "none"; downloadBtn.style.display = "block"; console.log(responseText, status, statusText); }, onfailure: (status, statusText) =>{ console.log(status, statusText); } })El código de mi petaca es
@app.route("/download", methods = ["GET", "POST"]) def download_video(): if request.method == "POST": buffer = BytesIO() url = YouTube(session['link']) itag = request.form.get("itag") video = url.streams.get_by_itag(itag) video.stream_to_buffer(buffer) buffer.seek(0) return send_file(buffer, as_attachment=True, download_name=url.title, mimetype="video/mp4")También traté de devolver un objeto con un texto de respuesta y send_file() como
return jsonify({ "text": "successfully downloaded", "download_file": send_file(buffer, as_attachment=True, download_name=url.title, mimetype="video/mp4") })pero eso también da un error, es decir, TypeError: el objeto de tipo Response no es JSON serializable