如果你想制作一个非常简单的文件浏览器,比如说/some/folder
在服务器上,让烧瓶应用程序运行并处理任何请求/here/
,/some/folder/here
然后再深入挖掘?因为flask 有这个,@app.route(('/')
所以每个请求都映射到一个函数,但是在这里你想要一个函数,比如说浏览来处理所有请求,并阻止请求/../../
,例如。
烧瓶不适合这个吗?我应该寻找其他东西吗?
这是相当可行的。有关示例,请参见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 响应。
例如
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
。
此外,请参阅此链接以了解直接返回文件的机制,而无需读取并返回它。在使用 Flask 的 python 中,如何写出一个对象以供下载?