是否可以使用flask来浏览带有文件的目录?
我的代码似乎永远不会正常工作,因为字符串之间发生了奇怪的附加.
此外,我不知道如何实现一种检查路径是文件还是文件夹.
这是我的Flask app.route:
@app.route('/files', defaults={'folder': None,'sub_folder': None}, methods=['GET'])
@app.route('/files/<folder>', defaults={'sub_folder': None}, methods=['GET'])
@app.route('/files/<folder>/<sub_folder>', methods=['GET'])
def files(folder,sub_folder):
basedir = 'files/'
directory = ''
if folder != None:
directory = directory + '/' + folder
if sub_folder != None:
directory = directory + '/' + sub_folder
files = os.listdir(basedir + directory)
return render_template('files.html',files=files,directory=basedir + directory,currdir=directory)
Run Code Online (Sandbox Code Playgroud)
这是我的html模板,如果有人能给我一些指示,我将不胜感激!
<body>
<h2>Files {{ currdir }}</h2> </br>
{% for name in files: %}
<A HREF="{{ directory }}{{ name }}">{{ name }}</A> </br></br>
{% endfor %}
</body>s.html',files=files,directory=basedir + directory,currdir=directory)
Run Code Online (Sandbox Code Playgroud)
viv*_*agr 12
一个path转换器(文档链接)中的URL结构比硬编码的所有不同的可能路径结构更好.
os.path.exists可用于检查路径是否有效,os.path.isfile以及分别os.path.isdir检查路径是文件还是目录.
终点:
@app.route('/', defaults={'req_path': ''})
@app.route('/<path:req_path>')
def dir_listing(req_path):
BASE_DIR = '/Users/vivek/Desktop'
# Joining the base and the requested path
abs_path = os.path.join(BASE_DIR, req_path)
# Return 404 if path doesn't exist
if not os.path.exists(abs_path):
return abort(404)
# Check if path is a file and serve
if os.path.isfile(abs_path):
return send_file(abs_path)
# Show directory contents
files = os.listdir(abs_path)
return render_template('files.html', files=files)
Run Code Online (Sandbox Code Playgroud)
模板:
<ul>
{% for file in files %}
<li><a href="{{ file }}">{{ file }}</a></li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
注:abort与send_file职能从瓶进口.
这是一个工作示例。
# app.py
from flask import Flask
from flask_autoindex import AutoIndex
app = Flask(__name__)
ppath = "/" # update your own parent directory here
app = Flask(__name__)
AutoIndex(app, browse_root=ppath)
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
这是一个工作仓库
| 归档时间: |
|
| 查看次数: |
14837 次 |
| 最近记录: |