Колба send_file / send_from_directory, возвращающая 200 кодов состояния, но не файл - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь отправить файл из приложения Flask через send_file() или send_from_directory(), но безуспешно.

Запрос возвращает ответ с status_code=200, но файл не загружается.Я убедился, что функции работают, так как они возвращают ошибки, когда файл или каталог не существует

Это последняя строка моей функции.Он обрабатывает POST запросов и должен вернуть файл после его сохранения.

# openpyxl stuff above
wb.save(app.instance_path + '/path/to/file/spreadsheet.xlsx') 

return send_file(current_dir + '/path/to/file/spreadsheet.xlsx')

Это то, что возвращается с сервера

127.0.0.1 - - [21/Apr/2019 20:05:26] "POST /api/admin/export_bookings HTTP/1.1" 200 -

Я проверил, что файл действительносоздается и сохраняется, и я проверил, что приведенная выше последняя строка возвращает ошибку, если путь указан неверно или файл не существует.

Почему это происходит?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Разобрался.Я использую axios для обработки моих POST запросов.Кажется, что javascript POST запросы не могут возвращать файлы.

Я нашел обходной путь, вернув '/path/to/file/spreadsheet.xlsx' в мой javascript как JSON и вызвав window.open() с этим путем.

Тогда мне нужно было только создать стандартный Flask GET route @bp.route('/path/to/file/<filename>), который возвращает файл из каталога по URL, используя эту функцию send_file().

0 голосов
/ 22 апреля 2019

Ваш form имеет enctype = "multipart/form-data"?

Вы проверяли, существует ли файл в запросе?

...