@harvesterr

Как сделать скачивание файлов через flask?

Необходимо скачать файл с сервера. Пользователю необходимо предоставить доступ к определенной директории на сервере, откуда он может выбрать файл, который он хочет скачать. Как это можно организовать через fkask?
То есть как я могу предоставить возможность пользователю выбрать файл, чтобы передать его в send_file()?
from flask import send_file
@app.route('/download_file')
def download_file():
    return send_file('table.xlsx')

Или как можно сделать форму для выбора файла в html?
  • Вопрос задан
  • 3633 просмотра
Пригласить эксперта
Ответы на вопрос 1
deepblack
@deepblack Куратор тега Python
Пользователю необходимо предоставить доступ к определенной директории на сервере, откуда он может выбрать файл, который он хочет скачать.


Построить дерево, например
так
def make_tree(path):
    tree = dict(name=path, children=[])
    try: lst = os.listdir(path)
    except OSError:
        pass #ignore errors
    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

В шаблоне вывести результат, со ссылкой на /uploads/path/filena.me
тут ловите директорию и имя файла и отдаёте пользователю
@app.route('/uploads/<path:filename>', methods=['GET', 'POST'])
def download(filename):
    uploads = os.path.join(current_app.root_path, app.config['UPLOAD_FOLDER'])
    return send_from_directory(directory=uploads, filename=filename)


Детали реализовывайте сами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы