Python Flask: возвращенный файл не читается - PullRequest
0 голосов
/ 26 января 2020

При реализации API отдыха в python flask я использовал несколько опций, чтобы вернуть файл (любого типа), прочитать его и сохранить в локальном хранилище запроса, но столкнулся с несколькими ошибками, как показано ниже:

Случай 1:

def download_file(): return send_file('any_file.pdf') r = requests.get(url = 'http://localhost:5000/download').read()

ответил с ошибкой Объект ответа не имеет атрибута read / text / content

Case 2:

def download_file(): file = open('any_file.pdf','r').read() return file r = requests.get(url = 'http://localhost:5000/download')

ответил с ошибкой Возврат не принимает это

Так как я могу сделать это как flask не позволяет вернуть файл без объекта ответа, а объект ответа не читается и не поддерживает непосредственное сохранение этого файла.

1 Ответ

1 голос
/ 26 января 2020

Сервер Flask код в Case 1 правильный. Более полный пример:

@app.route('/download')
def download_file():
    # Some logic here
    send_file('any_file.pdf')

Однако объект Response, возвращаемый requests.get, не имеет метода read. Правильный способ - использовать:

Response.content: содержимое ответа, в байтах.

Итак, код client должен быть :

r = requests.get('http://localhost:5000/download')
bytes = r.content

# Now do something with bytes, for example save it:

with open('downloaded_file.ext', 'wb') as f:
    f.write(bytes)
...