Скачать CSV файл в Flask Best Practice - PullRequest
0 голосов
/ 06 мая 2019

Прямо сейчас у меня есть колба, в которой часть функций позволяет мне выбирать диапазон дат и просматривать данные из базы данных sql из этого выбранного диапазона дат. Затем я могу нажать кнопку, и она экспортируется в файл CSV, который только что сохранен в каталоге проекта колбы. Я хочу, чтобы пользователь мог загрузить этот CSV-файл. Я хочу знать, как лучше всего загружать динамический CSV-файл для пользователя. Должен ли я отправить send_file () и затем удалить файл после того, как пользователь загрузил, так как эти данные не должны быть сохранены, и пользователь больше не будет использовать этот файл. Должен ли файл быть сохранен в базе данных, а затем удален из базы данных? Или я могу просто держать его в каталоге фляги? Пожалуйста, предоставьте понимание, если возможно, большое спасибо.

1 Ответ

2 голосов
/ 06 мая 2019

@ brunns указал в очень правильном направлении.

Вам не нужно сохранять файл в вашей базе данных, в вашей файловой структуре или где-либо еще.Он будет создан в памяти по запросу пользователя.

Я сделал это с django для pdf, а для csv файлов это будет работать так же, как и с flask.Основы все одинаковы.

для python3 используйте io.StringIO, для python2 используйте StringIO

from io import StringIO
import csv
from flask import make_response

@app.route('/download')
def post(self):
    si = StringIO.StringIO()
    cw = csv.writer(si)
    cw.writerows(csvList)
    output = make_response(si.getvalue())
    output.headers["Content-Disposition"] = "attachment; filename=export.csv"
    output.headers["Content-type"] = "text/csv"
    return output

Предоставлено: vectorfrog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...