Тип контента отличается при отправке файла на серверную часть FastAPI с использованием cURL, чем при запросах Python.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Тип контента отличается при отправке файла на серверную часть FastAPI с использованием cURL, чем при запросах Python.

Сообщение Anonymous »

У меня есть API, который принимает данные и файлы JSON ().
Это мой код fastapi:

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

@app.post("/api/")
async def dummy_file_return(metadata=Body(...),file=File(...)):
print("content_type is")
print(file.content_type)
При доступе с помощью Curl.

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

$curl -X POST -F file=@0_for_django_testcase.png -F metadata='{"meta":"test"}' localhost:8008/api/
показывает журнал сервера,

content_type равен

image/png

Я вижу, что content_type угадывается автоматически, а image/png устанавливается.
Затем Я пробовал то же самое по запросам python.

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

    response = requests.post(
url,
data={"metadata":json.dumps({"meta":"test")},
files = {
"file": open('0_for_django_testcase.png','rb')
},
)
консоль показывает

content_type

< р>

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

content_type
пуст и ничего не отображается.
Почему возникает такая разница?
В любом случае загрузка файла успешна, однако есть разница для content_type.
Я не устанавливаю заголовок для Curl, флаг -F тайно отправляет некоторые заголовки?
Еще одно испытание: я тестировал эти шаблоны с заголовками, но оба возвращают ошибка.

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

    response = requests.post(
url,
data={"metadata":json.dumps({"meta":"test")},
files = {
"file": open('0_for_django_testcase.png','rb')
},
headers={
"Content-Type":"image/png"
}
)

response = requests.post(
url,
data={"metadata":json.dumps({"meta":"test")},
files = {
"file": open('0_for_django_testcase.png','rb')
},
headers={
"Content-Type":"multipart/form-data"
}
)
Любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/766 ... url-than-p
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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