如何为Flask框架的send_from_directory函数提供正确的路径?

时间:2019-07-19 09:20:28

标签: python flask

我需要提供send_from_directory而不是根路径。我要放置文件的文件夹位于根文件夹中:root / excel / newfilename.xlsx我已经检查了类似问题的其他答案,但没有得到为什么代码不起作用的信息。

@app.route("/alldayinfo/toexcel", methods=["GET"])
@flask_login.login_required
def download_excel():
    # some code to pick up data and build dataframe ...
    df = pd.DataFrame(data=dict_df)
    thisd = date.today()
    excel_filename = thisd.strftime("%Y_%m_%d_") + str(uuid.uuid4()) + ".xlsx"
    df.to_excel(excel_filename, index=False)
    # send_from_directory  does not work:
    p = os.path.join(os.getcwd(), "excel")   
    # send_from_directory works well
     p = os.path.join(os.getcwd())  
    return send_from_directory(p, excel_filename, as_attachment=True)

1 个答案:

答案 0 :(得分:0)

这是我非常基本的错误!我将文件保存到不正确的文件夹中,并且问题与Flask无关,可能是时候在星期五晚上休息了。正确的代码:

@app.route("/alldayinfo/toexcel", methods=["GET"])
@flask_login.login_required
def download_excel():
    # some code to pick up data and build dataframe ...
    df = pd.DataFrame(data=dict_df)
    thisd = date.today()
    excel_filename = thisd.strftime("%Y_%m_%d_") + str(uuid.uuid4()) + ".xlsx"
    try:
        df.to_excel(os.path.join(WORKDIR, os.getcwd(), "toexcel", excel_filename), 
        index=False)
        return send_from_directory(
            os.path.join(WORKDIR, os.getcwd(), "toexcel"), excel_filename, 
            as_attachment=True)
    except Exception as ex:
        logging.warning("Wasn't able to provide toexcel file: {}".format(ex))
        return redirect("401.html", 301)