Файлы FastAPI должны быть помещены перед формой в параметрах функции.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Файлы FastAPI должны быть помещены перед формой в параметрах функции.

Сообщение Anonymous »

У меня есть конечная точка, которая принимает файл и строковый параметр, который я передаю через параметр формы. Но я заметил это при отладке:

Код: Выделить всё

import uvicorn
from fastapi import FastAPI, File, Form

app = FastAPI()

@app.post('/test')
def test(test_item: str = Form(...), test_file: bytes = File(...)):
return {
"test_item": test_item,
"test_file_len": len(test_file),
"test_file_contents": test_file.decode('utf-8')
}

if __name__ == '__main__':
uvicorn.run(app, host="0.0.0.0", port=8000)
используя эту простую команду Curl с текстом в файле test_file.txt:

Код: Выделить всё

curl localhost:8000/test -X POST -F test_file=@"test_file.txt" -F test_item="test"
не помогло с этой ошибкой:

Код: Выделить всё

{
"detail": [
{
"loc": [
"body",
"test_file"
],
"msg": "byte type expected",
"type": "type_error.bytes"
}
]
}
но что интересно, это сработало:

Код: Выделить всё

import uvicorn
from fastapi import FastAPI, File, Form

app = FastAPI()

@app.post('/test')
def test(test_file: bytes = File(...), test_item: str = Form(...)):
return {
"test_item": test_item,
"test_file_len": len(test_file),
"test_file_contents": test_file.decode('utf-8')
}

if __name__ == '__main__':
uvicorn.run(app, host="0.0.0.0", port=8000)
Единственное отличие состоит в том, что вы помещаете File перед элементом Form. Кто-нибудь знает, почему это произойдет? Похоже, перед формами необходимо загружать файлы. Возможно, файл уничтожается, когда форма анализирует тело запроса. В документации FastAPI я ничего не нашел об этом для форм и файлов.

Подробнее здесь: https://stackoverflow.com/questions/613 ... parameters
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»