Python Flask API возвращает содержимое CSV, но файл не загружается (Google Chrome)

Я написал API для возврата CSV пользователю на основе контента, который он заполняет в форме в веб-приложении. При запуске приведенного ниже кода я вижу ответ в своей консоли и уверен, что контент правильно возвращается моим API, но я не могу заставить файл автоматически начать загрузку. Мы ценим любые предложения!

csv = final_df.to_csv()
response = make_response(csv)
response.headers['Content-Disposition'] = "attachment; filename=export.csv"
response.headers['Content-type'] = "application/force-download"
return response

person ashpplejack    schedule 29.07.2020    source источник
comment
Возможно, это поможет вам с вашим вопросом   -  person Gabriel Milan    schedule 30.07.2020


Ответы (1)


Мой рабочий пример отличается тем, что имя файла заключено в кавычки (которое Документация разработчика намекает на необходимость) и использование правильного MIME-типа.

Пытаться

return bytes(csv, encoding='UTF-8'), 200, {
    'Content-Type': 'text/csv',
    'Content-Disposition': 'attachment; filename="export.csv"'}
person Dave W. Smith    schedule 29.07.2020
comment
К сожалению, с принудительной загрузкой этого решения все еще не повезло. Протестировано в Chrome, IE и Firefox. - person ashpplejack; 30.07.2020
comment
Я заметил, что код, из которого я его вытащил, все еще был Python2.7, и сделал одно изменение (в вызове bytes()) для Python3. У меня работает в Chrome и Firefox. - person Dave W. Smith; 30.07.2020
comment
Спасибо, Дэйв. Мне интересно, может быть, что-то происходит с моими сетевыми настройками, что может помешать загрузке, поскольку я также добавил кодировку, чтобы запустить решение. В итоге я оставил ваше решение, чтобы вернуть свой ответ, но мне пришлось написать что-то на стороне клиента, чтобы запросить загрузку файла. - person ashpplejack; 31.07.2020