如果你想创建一个非常简单的文件浏览器,让我们在服务器上说/some/folder
,让烧瓶应用程序运行并处理/here/
/some/folder/here
的任何请求然后挖掘更深的?因为flask具有@app.route(('/')
所以每个请求都映射到一个函数,但是在这里你需要一个函数,例如浏览来处理所有请求,并阻止/../../
的请求。
烧瓶不适合这个吗?我应该寻找别的吗?
答案 0 :(得分:2)
这是非常可行的。有关示例,请参阅http://flask.pocoo.org/snippets/57/。
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return 'You want path: %s' % path
您应该将/后面的所有内容都作为文件夹的路径处理。然后,您可以使用open打开该文件名,并将其写为Flask响应。
E.g。
my_path = os.path.join(my_folder, path)
with open(my_path) as the_file:
# do stuff
您可能需要使用os.path.separator
和os.path.join
等按摩路径,使其与平台无关。
此外,您需要确定要返回的文件的mimetype。这可以使用模块mimetypes
完成。
另外,请参阅此链接以获取直接返回文件的机制,而无需阅读并返回文件。 In python using Flask, how can I write out an object for download?