Пользователь, чтобы загрузить файл в свой локальный каталог - PullRequest
0 голосов
/ 11 июня 2019

Backend - я написал скрипт на python, который создает файл csv после некоторой агрегации.

Интерфейс. После завершения метода и создания файла .csv и его сохранения в каталоге на сервере я хочу предложить пользователю сохранить файл .csv на своем локальном компьютере (как в Windows). подсказка, которую вы получаете, когда нажимаете «сохранить как ...» на веб-странице).

Это пример того, что я сделал так далеко от того, что я узнал в Вернуть файл Excel в приложении Flask и Загрузить файл при нажатии кнопки в веб-приложении? :

Пример кода:

with open(save_path + unique_filename + ".csv", 'w', encoding = 'utf8') as g:
    writer = csv.writer(g, lineterminator = '\n')
    writer.writerow(['name', 'place', 'location'])

HTML:

@app.route('/login', method='POST')
def do_login():
    category   = request.forms.get('category')
    return '''
    <html><body>
    Hello. <a href="/getCSV"> Save Results </a>
    </body></html>
    '''

@app.route("/getCSV", methods = ['GET', 'POST'])
    def getPlotCSV():
    return send_from_directory(save_path + unique_filename + ".csv", as_attachment=True)


if __name__ == "__main__":
   run(app, host = 'localhost', port = 8000)

Мои вопросы:

1) send_from_directory из флакона, каков эквивалент бутылки?

2) Где в коде я размещаю созданный мной csv, чтобы пользователь мог загрузить его на свой локальный компьютер?

3) Что еще не так с моим кодом?

1 Ответ

0 голосов
/ 12 июня 2019

Пример бутылки: от https://bottlepy.org/docs/dev/tutorial.html

@route('/download/<filename:path>')
def download(filename):
    return static_file(filename, root='/path/to/static/files', download=filename)
...