Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何显示html,然后使用Flask重定向到下载_Python_Flask - Fatal编程技术网

Python 如何显示html,然后使用Flask重定向到下载

Python 如何显示html,然后使用Flask重定向到下载,python,flask,Python,Flask,我对Flask和web开发完全陌生,所以请忽略我可能使用的任何适当术语的缺乏 我试图显示一个页面,告诉用户他们的文件正在打包。一旦在后端的包装完成后,我想把他们重定向回他们来自的页面,并向他们发送一个文件下载 我仅限于使用Flask和Python2.7完成此任务 我尝试过将html和send\u文件(path\u to\u file)函数作为元组返回,也尝试过为send\u file()函数创建一个新线程,但都没有成功 我不知道下一步该怎么办 下面是一些代码,显示了我现在的位置: 导入后端 导

我对Flask和web开发完全陌生,所以请忽略我可能使用的任何适当术语的缺乏

我试图显示一个页面,告诉用户他们的文件正在打包。一旦在后端的包装完成后,我想把他们重定向回他们来自的页面,并向他们发送一个文件下载

我仅限于使用Flask和Python2.7完成此任务

我尝试过将html和
send\u文件(path\u to\u file)
函数作为元组返回,也尝试过为
send\u file()
函数创建一个新线程,但都没有成功

我不知道下一步该怎么办

下面是一些代码,显示了我现在的位置:


导入后端
导入线程
从flask导入请求发送\u文件
def get_包(post_数据):
file\u path=backend.get\u包(post\u数据)
返回发送文件(文件路径)
@app.route(“/pkg_下载”,方法=['POST']))
def pkg_下载():
post_data=dict(request.form.iterlists())
结果=threading.Thread(无,目标=get\u包,args=[post\u数据])
result.start()
html_dialog=“打包图像

” 返回html\u对话框
当我运行上述命令时,会出现以下错误:

运行时错误:在应用程序上下文之外工作。

而不是在压缩包后显示html并下载文件


但是,我真的不知道我在做什么,这可能是一个完全错误的方法。任何帮助都将不胜感激。

您想做的事情不应该直接在服务器的API请求中完成。创建存档可能需要一些时间,通常最好直接响应您收到的请求并启动后台任务以执行更长的操作

一旦较长的操作成功,您可以向客户端发送一条消息,告诉他归档文件已准备好供他下载

实施建议:

  • 前端向Flask服务器发送一个请求,其中包含用户要压缩的文件
  • 您在Flask上接收文件并将其保存到某个位置
  • 在同一个函数中,您可以启动一个任务,其中包含有关执行请求的客户机以及他上载的文件路径的信息
  • 压缩芹菜任务中的文件,一旦成功,就可以向用户发送通知(要发送通知,可以使用发送到前端的websocket)
此实现将允许您编写以下逻辑代码,并在网站前端显示此行为:

  • 创建一个连接到后端并允许您与客户端通信的websocket
  • 用户选择要压缩的文件
  • 您开始将它们发送到服务器(FlaskAPI)
  • 你放了一条加载消息,说他的文件正在上传
  • 当您收到API请求的答复时,您可以显示一条消息,指示文件上载成功
  • 您将显示一条消息,说明服务器当前正在处理对其文件的压缩
  • 当前端接收到带有存档链接的websocket时,会相应地向用户显示它

瞧,你应该准备好了。

你想做的事情不应该直接在服务器的API请求中完成。创建存档可能需要一些时间,通常最好直接响应您收到的请求并启动后台任务以执行更长的操作

一旦较长的操作成功,您可以向客户端发送一条消息,告诉他归档文件已准备好供他下载

实施建议:

  • 前端向Flask服务器发送一个请求,其中包含用户要压缩的文件
  • 您在Flask上接收文件并将其保存到某个位置
  • 在同一个函数中,您可以启动一个任务,其中包含有关执行请求的客户机以及他上载的文件路径的信息
  • 压缩芹菜任务中的文件,一旦成功,就可以向用户发送通知(要发送通知,可以使用发送到前端的websocket)
此实现将允许您编写以下逻辑代码,并在网站前端显示此行为:

  • 创建一个连接到后端并允许您与客户端通信的websocket
  • 用户选择要压缩的文件
  • 您开始将它们发送到服务器(FlaskAPI)
  • 你放了一条加载消息,说他的文件正在上传
  • 当您收到API请求的答复时,您可以显示一条消息,指示文件上载成功
  • 您将显示一条消息,说明服务器当前正在处理对其文件的压缩
  • 当前端接收到带有存档链接的websocket时,会相应地向用户显示它

瞧,你应该准备好了。

你想让前端做重定向,所以你只需要呈现模板,然后JavaScript就可以转到下载页面你想让前端做重定向,所以你只需要呈现模板,然后JavaScript就可以转到下载页面