Удалось путем чтения туториалов и стековерфлоу реализовать следующее (загрузка файлов и просмотр папки, куда все загружается):
import os from flask import request, redirect, url_for, render_template, abort, send_file from werkzeug.utils import secure_filename from app import app @app.route('/') @app.route('/index/') def index(): path = os.path.expanduser('static') return render_template('index.html', tree=make_tree(path)) def make_tree(path): tree = dict(name=path, children=[]) try: lst = os.listdir(path) except OSError: pass else: for name in lst: fn = os.path.join(path, name) if os.path.isdir(fn): tree['children'].append(make_tree(fn)) else: tree['children'].append(dict(name=fn)) return tree UPLOAD_FOLDER = 'static' ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER def make_dirs(): # os.mkdir('static') # os.mkdir('tmp') # os.mkdir('app') # os.mkdir('app/templates') # os.mkdir('app/static') pass def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('//', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] if file.filename == '': flash('No selected file') return redirect(request.url) if file and allowed_file(file.filename): filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) return redirect(url_for('index')) return
<html> <head> <title>Path: {{ tree.name }}</title> <h1>{{ tree.name }}</h1> </head> <body> <form method=post enctype=multipart/form-data> <input type=file name=file> <input type=submit value=Upload> </form> <ul> {%- for item in tree.children recursive %} <li><a href="{{ item.name }}">{{ item.name }}</a> {%- if item.children -%} <ul><a href="/static/{{ (item.children) }}">{{ loop(item.children) }}</a></ul> {%- endif %}</li> {%- endfor %} </ul> </body> </html>
Возможно есть примеры схожих небольших проектов (находил похожее на github, но простыми и легкими их сложно назвать), как пример. Или какой-либо другой возможный путь реализации задумки.
Спасибо!