Отправка файла пользователю дает UnicodeEncodeError в фреймворке Flask - PullRequest
0 голосов
/ 12 сентября 2018

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

# Prepare selected file for download...
send_file( '/home/nikos/wsgi/static/files/' + filename )

Но независимо от того, какой файл выбирает пользователь, iam всегда получает этот ответ.

[Wed Sep 12 14:10:48.450211 2018] [wsgi:error] [pid 5172] [remote 46.103.174.201:14089]   File "/home/nikos/wsgi/downloads.py", line 182, in file
[Wed Sep 12 14:10:48.450214 2018] [wsgi:error] [pid 5172] [remote 46.103.174.201:14089]     send_file( '/home/nikos/wsgi/static/files/' + filename )
[Wed Sep 12 14:10:48.450219 2018] [wsgi:error] [pid 5172] [remote 46.103.174.201:14089]   File "/usr/lib/python3.6/site-packages/flask/helpers.py", line 592, in send_file
[Wed Sep 12 14:10:48.450221 2018] [wsgi:error] [pid 5172] [remote 46.103.174.201:14089]     file = open(filename, 'rb')
[Wed Sep 12 14:10:48.450237 2018] [wsgi:error] [pid 5172] [remote 46.103.174.201:14089] UnicodeEncodeError: 'ascii' codec can't encode characters in position 30-39: ordinal not in range(128)

Как я смогу отправить выбранный файл пользователю?

1 Ответ

0 голосов
/ 12 сентября 2018

Попробуйте это .. Перед отправкой файла сделайте,

file_name.encode('utf-8')

Итак, передайте эти дополнительные параметры в send_file (), я получил их из этого потока

attachment_filename=file_name.encode('utf-8'),as_attachment=True, conditional=True

Итак, ваш send_file может выглядеть следующим образом ...

filepath = '/home/nikos/wsgi/static/files/' + filename
filepath = filepath.encode('utf-8')

send_file(attachment_filename=filepath,as_attachment=True, conditional=True)

Дайте мне знать, если это сработало, поэтому я могу попробовать дальше.

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