2016-05-06 1 views
2

Я хочу вернуть .txt с некоторыми результатами для пользователя по определенному маршруту. так у меня есть:возвращающий текст (в переменной) как .txt-файл на лету через HTTP-заголовки и т. Д.

@route('/export') 
def export_results(): 
    #here is some data gathering ot the variable 
    return #here i want to somehow return on-the-fly my variable as a .txt file 

Итак, я знаю, как:

  • открыт, возвращение static_file (корень = 'blahroot', имя файла = 'бла'), близко, разъединить
  • макияж некоторые аналогичные действия с «import tempfile» и т. д.

НО: Я слышал, что я могу каким-то образом настроить HTTP-заголовки определенным образом, чтобы вернуть мою переменную, поскольку текст будет получен браузерами lik e файл.

вопрос: как заставить его работать таким образом?

PS: как показано в тегах я на Python3, используя бутылки и планирую иметь сервер от CherryPy как WSGI сервер

ответ

0

Если я правильно понимаю, вы хотите браузер вашего посетителя, чтобы предложить, чтобы сохранить ответ в виде файла , а не отображать его в самом браузере. Сделать это просто; просто установить эти заголовки:

Content-Type: text/plain 
Content-Disposition: attachment; filename="yourfilename.txt" 

и браузер предложит пользователю сохранить файл и предложит имя файла «yourfilename.txt». (Более подробное обсуждение here.)

Чтобы установить заголовки в бутылке, используйте response.set_header:

from bottle import response 

@route('/export') 
def export(): 
    the_text = <however you choose to get the text of your response> 
    response.set_header('Content-Type', 'text/plain') 
    response.set_header('Content-Disposition', 'attachment; filename="yourfilename.txt"') 
    return the_text 
+0

вау, спасибо! это именно то, что я хотел реализовать – Amphyby

Смежные вопросы