2016-09-25 50 views
0

我正在运行Flask应用程序,其中用户通过在文本框中输入内容来发出GET请求。接收GET请求的后端代码对查询参数执行一些计算,并返回2或3个新创建的作为计算结果创建的json文件的名称。然后,用户可以查看由JSON文件创建的一些图,具体取决于用户选择的某些过滤。我的问题是,我希望这些json文件存储在一个名为data的文件夹中(并且由于各种原因和更快的响应,它们随时间积累)。我的应用程序的结构大致是:在Flask中为动态生成的文件提供服务

/data 
/static 
/templates 
/python src files 

现在,我可以得到HTML代码了解下静态文件,但它不为数据文件夹下的文件。如何让Flask知道数据文件夹的GET请求被允许?

回答

1

您可以使用send_from_directory()/data提供文件。

@app.route('/data/<path:filepath>') 
def data(filepath): 
    return send_from_directory('data', filepath) 
+0

谢谢,我会试试这个,文件名是否可以在另一个目录下呢?例如/data/dir1/f1.json或/data/dir2/f2.json等 – user3079275

+0

我修改了我的答案以允许子目录。此外,以前有一个小错误:它应该是数据而不是目录路径的“/ data”。 – xli

+0

谢谢我尝试后,如果它的作品,我会接受你的答案。这将需要我几个小时。非常感谢 – user3079275

0

为什么在动作函数中没有缓存逻辑?如果该文件已被缓存,则将其从单个文件加载中输出。我想成像你也想要访问控制,这不会通过从HTTP服务提供静态文件发生。

+0

我不理解术语动作函数,它是请求JSON文件的前端代码吗? html代码不知道它需要解析的JSON文件的名称,因为它取决于后端代码完成的计算结果。一旦后端将回应与JSON文件的名称一起发回,html代码就可以根据用户交互过滤它们。 – user3079275

相关问题